{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv(\"/Users/elvis/dataset/boston_housing.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "      <th>MEDV</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.00632</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1</td>\n",
       "      <td>296</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.90</td>\n",
       "      <td>4.98</td>\n",
       "      <td>24.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2</td>\n",
       "      <td>242</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.14</td>\n",
       "      <td>21.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.02729</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2</td>\n",
       "      <td>242</td>\n",
       "      <td>17.8</td>\n",
       "      <td>392.83</td>\n",
       "      <td>4.03</td>\n",
       "      <td>34.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.03237</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>6.998</td>\n",
       "      <td>45.8</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3</td>\n",
       "      <td>222</td>\n",
       "      <td>18.7</td>\n",
       "      <td>394.63</td>\n",
       "      <td>2.94</td>\n",
       "      <td>33.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      CRIM    ZN  INDUS  CHAS    NOX     RM   AGE     DIS  RAD  TAX  PTRATIO  \\\n",
       "0  0.00632  18.0   2.31     0  0.538  6.575  65.2  4.0900    1  296     15.3   \n",
       "1  0.02731   0.0   7.07     0  0.469  6.421  78.9  4.9671    2  242     17.8   \n",
       "2  0.02729   0.0   7.07     0  0.469  7.185  61.1  4.9671    2  242     17.8   \n",
       "3  0.03237   0.0   2.18     0  0.458  6.998  45.8  6.0622    3  222     18.7   \n",
       "\n",
       "        B  LSTAT  MEDV  \n",
       "0  396.90   4.98  24.0  \n",
       "1  396.90   9.14  21.6  \n",
       "2  392.83   4.03  34.7  \n",
       "3  394.63   2.94  33.4  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head(4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#pd.plotting.scatter_matrix(data, alpha=0.7, figsize=(10,10), diagonal='kde')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "      <th>MEDV</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>CRIM</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.200238</td>\n",
       "      <td>0.406292</td>\n",
       "      <td>-0.056132</td>\n",
       "      <td>0.420657</td>\n",
       "      <td>-0.218781</td>\n",
       "      <td>0.352315</td>\n",
       "      <td>-0.379697</td>\n",
       "      <td>0.625349</td>\n",
       "      <td>0.582587</td>\n",
       "      <td>0.289399</td>\n",
       "      <td>-0.384861</td>\n",
       "      <td>0.455360</td>\n",
       "      <td>-0.387928</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ZN</th>\n",
       "      <td>-0.200238</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.531779</td>\n",
       "      <td>-0.041241</td>\n",
       "      <td>-0.515468</td>\n",
       "      <td>0.310950</td>\n",
       "      <td>-0.570811</td>\n",
       "      <td>0.660720</td>\n",
       "      <td>-0.312603</td>\n",
       "      <td>-0.312512</td>\n",
       "      <td>-0.386478</td>\n",
       "      <td>0.175082</td>\n",
       "      <td>-0.410323</td>\n",
       "      <td>0.358527</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>INDUS</th>\n",
       "      <td>0.406292</td>\n",
       "      <td>-0.531779</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.062296</td>\n",
       "      <td>0.762844</td>\n",
       "      <td>-0.390544</td>\n",
       "      <td>0.643891</td>\n",
       "      <td>-0.706601</td>\n",
       "      <td>0.595017</td>\n",
       "      <td>0.720242</td>\n",
       "      <td>0.380527</td>\n",
       "      <td>-0.356631</td>\n",
       "      <td>0.602451</td>\n",
       "      <td>-0.482371</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CHAS</th>\n",
       "      <td>-0.056132</td>\n",
       "      <td>-0.041241</td>\n",
       "      <td>0.062296</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.090678</td>\n",
       "      <td>0.091719</td>\n",
       "      <td>0.086070</td>\n",
       "      <td>-0.098474</td>\n",
       "      <td>-0.007653</td>\n",
       "      <td>-0.036106</td>\n",
       "      <td>-0.122654</td>\n",
       "      <td>0.049014</td>\n",
       "      <td>-0.054672</td>\n",
       "      <td>0.175976</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NOX</th>\n",
       "      <td>0.420657</td>\n",
       "      <td>-0.515468</td>\n",
       "      <td>0.762844</td>\n",
       "      <td>0.090678</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.300957</td>\n",
       "      <td>0.730852</td>\n",
       "      <td>-0.768642</td>\n",
       "      <td>0.611254</td>\n",
       "      <td>0.667359</td>\n",
       "      <td>0.185846</td>\n",
       "      <td>-0.379713</td>\n",
       "      <td>0.589649</td>\n",
       "      <td>-0.425956</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RM</th>\n",
       "      <td>-0.218781</td>\n",
       "      <td>0.310950</td>\n",
       "      <td>-0.390544</td>\n",
       "      <td>0.091719</td>\n",
       "      <td>-0.300957</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.239140</td>\n",
       "      <td>0.203067</td>\n",
       "      <td>-0.209238</td>\n",
       "      <td>-0.291093</td>\n",
       "      <td>-0.354222</td>\n",
       "      <td>0.127566</td>\n",
       "      <td>-0.613231</td>\n",
       "      <td>0.694945</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AGE</th>\n",
       "      <td>0.352315</td>\n",
       "      <td>-0.570811</td>\n",
       "      <td>0.643891</td>\n",
       "      <td>0.086070</td>\n",
       "      <td>0.730852</td>\n",
       "      <td>-0.239140</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.747799</td>\n",
       "      <td>0.455562</td>\n",
       "      <td>0.505576</td>\n",
       "      <td>0.259322</td>\n",
       "      <td>-0.273061</td>\n",
       "      <td>0.601407</td>\n",
       "      <td>-0.375737</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DIS</th>\n",
       "      <td>-0.379697</td>\n",
       "      <td>0.660720</td>\n",
       "      <td>-0.706601</td>\n",
       "      <td>-0.098474</td>\n",
       "      <td>-0.768642</td>\n",
       "      <td>0.203067</td>\n",
       "      <td>-0.747799</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.494768</td>\n",
       "      <td>-0.533461</td>\n",
       "      <td>-0.227442</td>\n",
       "      <td>0.291203</td>\n",
       "      <td>-0.494797</td>\n",
       "      <td>0.247095</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RAD</th>\n",
       "      <td>0.625349</td>\n",
       "      <td>-0.312603</td>\n",
       "      <td>0.595017</td>\n",
       "      <td>-0.007653</td>\n",
       "      <td>0.611254</td>\n",
       "      <td>-0.209238</td>\n",
       "      <td>0.455562</td>\n",
       "      <td>-0.494768</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.910275</td>\n",
       "      <td>0.464368</td>\n",
       "      <td>-0.444191</td>\n",
       "      <td>0.488265</td>\n",
       "      <td>-0.381075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TAX</th>\n",
       "      <td>0.582587</td>\n",
       "      <td>-0.312512</td>\n",
       "      <td>0.720242</td>\n",
       "      <td>-0.036106</td>\n",
       "      <td>0.667359</td>\n",
       "      <td>-0.291093</td>\n",
       "      <td>0.505576</td>\n",
       "      <td>-0.533461</td>\n",
       "      <td>0.910275</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.459543</td>\n",
       "      <td>-0.441523</td>\n",
       "      <td>0.543049</td>\n",
       "      <td>-0.467598</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PTRATIO</th>\n",
       "      <td>0.289399</td>\n",
       "      <td>-0.386478</td>\n",
       "      <td>0.380527</td>\n",
       "      <td>-0.122654</td>\n",
       "      <td>0.185846</td>\n",
       "      <td>-0.354222</td>\n",
       "      <td>0.259322</td>\n",
       "      <td>-0.227442</td>\n",
       "      <td>0.464368</td>\n",
       "      <td>0.459543</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.176612</td>\n",
       "      <td>0.371730</td>\n",
       "      <td>-0.506451</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>-0.384861</td>\n",
       "      <td>0.175082</td>\n",
       "      <td>-0.356631</td>\n",
       "      <td>0.049014</td>\n",
       "      <td>-0.379713</td>\n",
       "      <td>0.127566</td>\n",
       "      <td>-0.273061</td>\n",
       "      <td>0.291203</td>\n",
       "      <td>-0.444191</td>\n",
       "      <td>-0.441523</td>\n",
       "      <td>-0.176612</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.365724</td>\n",
       "      <td>0.333058</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LSTAT</th>\n",
       "      <td>0.455360</td>\n",
       "      <td>-0.410323</td>\n",
       "      <td>0.602451</td>\n",
       "      <td>-0.054672</td>\n",
       "      <td>0.589649</td>\n",
       "      <td>-0.613231</td>\n",
       "      <td>0.601407</td>\n",
       "      <td>-0.494797</td>\n",
       "      <td>0.488265</td>\n",
       "      <td>0.543049</td>\n",
       "      <td>0.371730</td>\n",
       "      <td>-0.365724</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.737076</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MEDV</th>\n",
       "      <td>-0.387928</td>\n",
       "      <td>0.358527</td>\n",
       "      <td>-0.482371</td>\n",
       "      <td>0.175976</td>\n",
       "      <td>-0.425956</td>\n",
       "      <td>0.694945</td>\n",
       "      <td>-0.375737</td>\n",
       "      <td>0.247095</td>\n",
       "      <td>-0.381075</td>\n",
       "      <td>-0.467598</td>\n",
       "      <td>-0.506451</td>\n",
       "      <td>0.333058</td>\n",
       "      <td>-0.737076</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             CRIM        ZN     INDUS      CHAS       NOX        RM       AGE  \\\n",
       "CRIM     1.000000 -0.200238  0.406292 -0.056132  0.420657 -0.218781  0.352315   \n",
       "ZN      -0.200238  1.000000 -0.531779 -0.041241 -0.515468  0.310950 -0.570811   \n",
       "INDUS    0.406292 -0.531779  1.000000  0.062296  0.762844 -0.390544  0.643891   \n",
       "CHAS    -0.056132 -0.041241  0.062296  1.000000  0.090678  0.091719  0.086070   \n",
       "NOX      0.420657 -0.515468  0.762844  0.090678  1.000000 -0.300957  0.730852   \n",
       "RM      -0.218781  0.310950 -0.390544  0.091719 -0.300957  1.000000 -0.239140   \n",
       "AGE      0.352315 -0.570811  0.643891  0.086070  0.730852 -0.239140  1.000000   \n",
       "DIS     -0.379697  0.660720 -0.706601 -0.098474 -0.768642  0.203067 -0.747799   \n",
       "RAD      0.625349 -0.312603  0.595017 -0.007653  0.611254 -0.209238  0.455562   \n",
       "TAX      0.582587 -0.312512  0.720242 -0.036106  0.667359 -0.291093  0.505576   \n",
       "PTRATIO  0.289399 -0.386478  0.380527 -0.122654  0.185846 -0.354222  0.259322   \n",
       "B       -0.384861  0.175082 -0.356631  0.049014 -0.379713  0.127566 -0.273061   \n",
       "LSTAT    0.455360 -0.410323  0.602451 -0.054672  0.589649 -0.613231  0.601407   \n",
       "MEDV    -0.387928  0.358527 -0.482371  0.175976 -0.425956  0.694945 -0.375737   \n",
       "\n",
       "              DIS       RAD       TAX   PTRATIO         B     LSTAT      MEDV  \n",
       "CRIM    -0.379697  0.625349  0.582587  0.289399 -0.384861  0.455360 -0.387928  \n",
       "ZN       0.660720 -0.312603 -0.312512 -0.386478  0.175082 -0.410323  0.358527  \n",
       "INDUS   -0.706601  0.595017  0.720242  0.380527 -0.356631  0.602451 -0.482371  \n",
       "CHAS    -0.098474 -0.007653 -0.036106 -0.122654  0.049014 -0.054672  0.175976  \n",
       "NOX     -0.768642  0.611254  0.667359  0.185846 -0.379713  0.589649 -0.425956  \n",
       "RM       0.203067 -0.209238 -0.291093 -0.354222  0.127566 -0.613231  0.694945  \n",
       "AGE     -0.747799  0.455562  0.505576  0.259322 -0.273061  0.601407 -0.375737  \n",
       "DIS      1.000000 -0.494768 -0.533461 -0.227442  0.291203 -0.494797  0.247095  \n",
       "RAD     -0.494768  1.000000  0.910275  0.464368 -0.444191  0.488265 -0.381075  \n",
       "TAX     -0.533461  0.910275  1.000000  0.459543 -0.441523  0.543049 -0.467598  \n",
       "PTRATIO -0.227442  0.464368  0.459543  1.000000 -0.176612  0.371730 -0.506451  \n",
       "B        0.291203 -0.444191 -0.441523 -0.176612  1.000000 -0.365724  0.333058  \n",
       "LSTAT   -0.494797  0.488265  0.543049  0.371730 -0.365724  1.000000 -0.737076  \n",
       "MEDV     0.247095 -0.381075 -0.467598 -0.506451  0.333058 -0.737076  1.000000  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.corr() #结合相关性，大体了解数据整体分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "MEDV    float64\n",
       "dtype: object"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#通过相关系数法进行特征选择\n",
    "x = data[['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX','PTRATIO', 'B', 'LSTAT']]\n",
    "y = data[['MEDV']]\n",
    "from sklearn.feature_selection import SelectKBest\n",
    "from sklearn.feature_selection import f_regression\n",
    "SelectKBest = SelectKBest(f_regression, k=3)\n",
    "bestFeature = SelectKBest.fit_transform(x,y)\n",
    "y.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False, False, False, False,  True, False, False, False,\n",
       "       False,  True, False,  True])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "SelectKBest.get_support()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['RM', 'PTRATIO', 'LSTAT'], dtype='object')"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.columns[SelectKBest.get_support()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "features = data[['RM', 'PTRATIO', 'LSTAT']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "#pd.plotting.scatter_matrix(features, alpha=0.7, figsize=(6,6), diagonal='hist')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/indexing.py:844: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  self.obj[key] = _infer_fill_value(value)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/indexing.py:1047: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  self.obj[item_labels[indexer[info_axis]]] = value\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/indexing.py:844: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  self.obj[key] = _infer_fill_value(value)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/indexing.py:1047: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  self.obj[item_labels[indexer[info_axis]]] = value\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/indexing.py:844: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  self.obj[key] = _infer_fill_value(value)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/indexing.py:1047: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  self.obj[item_labels[indexer[info_axis]]] = value\n"
     ]
    }
   ],
   "source": [
    "from sklearn.preprocessing import MinMaxScaler\n",
    "scaler = MinMaxScaler()\n",
    "for feature in features.columns:\n",
    "    features.loc[:,'标准化'+feature] = scaler.fit_transform(features[[feature]])\n",
    "\n",
    "#散点可视化，查看特征归一化后的数据\n",
    "#font={\n",
    "#      'family':'SimHei'\n",
    "#      }\n",
    "#matplotlib.rc('font', **font)\n",
    "#pd.plotting.scatter_matrix(features[['标准化RM', '标准化PTRATIO', '标准化LSTAT']], alpha=0.7, figsize=(6,6), diagonal='hist')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>RM</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>LSTAT</th>\n",
       "      <th>标准化RM</th>\n",
       "      <th>标准化PTRATIO</th>\n",
       "      <th>标准化LSTAT</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6.575</td>\n",
       "      <td>15.3</td>\n",
       "      <td>4.98</td>\n",
       "      <td>0.577505</td>\n",
       "      <td>0.287234</td>\n",
       "      <td>0.089680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6.421</td>\n",
       "      <td>17.8</td>\n",
       "      <td>9.14</td>\n",
       "      <td>0.547998</td>\n",
       "      <td>0.553191</td>\n",
       "      <td>0.204470</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7.185</td>\n",
       "      <td>17.8</td>\n",
       "      <td>4.03</td>\n",
       "      <td>0.694386</td>\n",
       "      <td>0.553191</td>\n",
       "      <td>0.063466</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6.998</td>\n",
       "      <td>18.7</td>\n",
       "      <td>2.94</td>\n",
       "      <td>0.658555</td>\n",
       "      <td>0.648936</td>\n",
       "      <td>0.033389</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>7.147</td>\n",
       "      <td>18.7</td>\n",
       "      <td>5.33</td>\n",
       "      <td>0.687105</td>\n",
       "      <td>0.648936</td>\n",
       "      <td>0.099338</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>6.593</td>\n",
       "      <td>21.0</td>\n",
       "      <td>9.67</td>\n",
       "      <td>0.580954</td>\n",
       "      <td>0.893617</td>\n",
       "      <td>0.219095</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>501</th>\n",
       "      <td>6.120</td>\n",
       "      <td>21.0</td>\n",
       "      <td>9.08</td>\n",
       "      <td>0.490324</td>\n",
       "      <td>0.893617</td>\n",
       "      <td>0.202815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>502</th>\n",
       "      <td>6.976</td>\n",
       "      <td>21.0</td>\n",
       "      <td>5.64</td>\n",
       "      <td>0.654340</td>\n",
       "      <td>0.893617</td>\n",
       "      <td>0.107892</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>503</th>\n",
       "      <td>6.794</td>\n",
       "      <td>21.0</td>\n",
       "      <td>6.48</td>\n",
       "      <td>0.619467</td>\n",
       "      <td>0.893617</td>\n",
       "      <td>0.131071</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>504</th>\n",
       "      <td>6.030</td>\n",
       "      <td>21.0</td>\n",
       "      <td>7.88</td>\n",
       "      <td>0.473079</td>\n",
       "      <td>0.893617</td>\n",
       "      <td>0.169702</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>505 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        RM  PTRATIO  LSTAT     标准化RM  标准化PTRATIO  标准化LSTAT\n",
       "0    6.575     15.3   4.98  0.577505    0.287234  0.089680\n",
       "1    6.421     17.8   9.14  0.547998    0.553191  0.204470\n",
       "2    7.185     17.8   4.03  0.694386    0.553191  0.063466\n",
       "3    6.998     18.7   2.94  0.658555    0.648936  0.033389\n",
       "4    7.147     18.7   5.33  0.687105    0.648936  0.099338\n",
       "..     ...      ...    ...       ...         ...       ...\n",
       "500  6.593     21.0   9.67  0.580954    0.893617  0.219095\n",
       "501  6.120     21.0   9.08  0.490324    0.893617  0.202815\n",
       "502  6.976     21.0   5.64  0.654340    0.893617  0.107892\n",
       "503  6.794     21.0   6.48  0.619467    0.893617  0.131071\n",
       "504  6.030     21.0   7.88  0.473079    0.893617  0.169702\n",
       "\n",
       "[505 rows x 6 columns]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "#拆分数据集,拆分成训练数据集和测试数据集\n",
    "from sklearn.model_selection import train_test_split\n",
    "x_train,x_test,y_train,y_test = train_test_split(features[['标准化RM', '标准化PTRATIO', '标准化LSTAT']],y,test_size=0.3,random_state=33)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "#采用交叉验证的方法对模型进行评估\n",
    "from sklearn.model_selection import cross_val_predict\n",
    "from sklearn.model_selection import cross_val_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "#打算采用几种方式，线性回归、支持向量机、KNN、决策树\n",
    "#线性回归\n",
    "from sklearn import linear_model\n",
    "lr = linear_model.LinearRegression()\n",
    "lr_predict = cross_val_predict(lr,x_train,y_train,cv=5)\n",
    "lr_score = cross_val_score(lr,x_train,y_train,cv=5)\n",
    "lr_meanscore = lr_score.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    }
   ],
   "source": [
    "#SVR模型预测房价 尝试三种核，'linear', 'poly', 'rbf'\n",
    "from sklearn.svm import SVR\n",
    "linear_svr = SVR(kernel = 'linear')\n",
    "linear_svr_predict = cross_val_predict(linear_svr, x_train, y_train, cv=5)\n",
    "linear_svr_score = cross_val_score(linear_svr, x_train, y_train, cv=5)\n",
    "linear_svr_meanscore = linear_svr_score.mean()\n",
    "\n",
    "poly_svr = SVR(kernel = 'poly')\n",
    "poly_svr_predict = cross_val_predict(poly_svr, x_train, y_train, cv=5)\n",
    "poly_svr_score = cross_val_score(poly_svr, x_train, y_train, cv=5)\n",
    "poly_svr_meanscore = poly_svr_score.mean()\n",
    "\n",
    "rbf_svr = SVR(kernel = 'rbf')\n",
    "rbf_svr_predict = cross_val_predict(rbf_svr, x_train, y_train, cv=5)\n",
    "rbf_svr_score = cross_val_score(rbf_svr, x_train, y_train, cv=5)\n",
    "rbf_svr_meanscore = rbf_svr_score.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'mean-score5')"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEDCAYAAAA1CHOzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8GearUAAAgAElEQVR4nO3deXyV9Zn38c+VjYQEErLIvou4AaIRBUGClVbbWitTt/qM023sWKfL88w8dtG2trXtjPVxprXVFocuTltbrK3VqXZRRNwQQUVFRVEIayQnC8kJZL+eP87JQsxyCDk5h3N/369XXtw553efc+Umua/z+92/33WbuyMiIpKW6ABERCQ5KCGIiAighCAiIlFKCCIiAighiIhIlBKCiIgAkJHoAAaruLjYp02blugwRESOKZs2bQq5e0lvz8UlIZjZKuAk4CF3v7mX568FLo9+WwA86+6fjj43Fvizu8/v7z2mTZvGxo0bhzZwEZEUZ2blfT035ENGZrYCSHf3RcAEM5vVs4273+nuZe5eBjwBrOz29K1AzlDHJSIi/YvHNYQyYHV0ew2wuK+GZjYRGOvum6Lfnwc0ABV9tL/GzDaa2cbKysohDVpEJOjikRBygT3R7TpgbD9trwPuBDCzLOBrwJf6auzuK9291N1LS0p6HQITEZFBikdCCNM15JPX13uYWRqwzN0fiz70JeBH7l4bh5hERGQA8UgIm+gaJpoH7Oij3RLg2W7fnw9cZ2ZrgdPM7L/iEJuIiPQhHrOM7geeMLMJwIXAFWZ2s7vf2KPd+4B1Hd+4+7kd22a21t0/FYfYRESkD0OeENy9zszKgOXALe5eAWzupd1X+nmNsqGOS0RE+heXlcruXuPuq6PJQIZQuKmVXzy9g/11jYkORURSjEpXHEPcnS/+7iW+/sAWln5vLbf9dSvhptZEhyUiKeKYLV0RRL94egd/enkf15w7g721h/jBmm386tmdfP78WVy5YAqZ6fHP729Vhlnz2n5mlORSOq2Q/JzMuL9nX9ydQy1tHDjUQt2hVg4caun8quuxXdfY9f2hljZOGZ/POccXsej4YmYU52JmCfs5RJKFHau30CwtLfUgla54YWcNl/3kGc6dVcJdV5eSlmZs3lXLdx9+jfVvVzOtaCTXX3AiF546bshPbm3tzqOvvcN/ry/niTdDnY+bwYnjRnPW9EIWTC/kzGmFlIwaMaTvDVDX2MIrew7wyp4DvLynjtf31VHd0ExdYwstbf3//o7KzmB0dib5OZGv0TkZZKan8cLOWvbUHgJg3OhsFh1fxOLjiznn+GLGjs4e8p9BJFmY2SZ3L+31OSWE5FfT0MwHb38SgD99bjEFI7M6n3N31m6t5LsPv8Yb74Q5bXIBX3n/SSyYXnjU71vd0MxvntvJr9bvZE/tIcbnZ3PVWVP48PyJ7Ko+xIbt1WzYUcXz5bUcamkDYEZJ7mEJYtKYkUf0nj1P/q/sOcD2UEPn8xMLcjh5wmhKRo3oOsl3O+F3nPTzczIZlZ1JelrvydHd2Vl9kCe3hXh6WxVPvxWi5mALADNLcjnn+GIWzSxm4Ywi8kcmrhckMtSUEI5h7e3OJ3/xHE9tq+Lef1rIvMkFvbZra3fue343t/31DSrqGjn/pLF86cLZHH/cqCN+z827arn7mXIefGkvza3tLJpZxNULp3L+SWPJ6GVYqqWtnVf2HIgkiO3VbNhRTX1j5NrGxIIcFkQTxILphYcNz9Q1trBlTx0v76nt8+R/6sTRzJmYz5xJBZw6YTRFeUPfA4HIcX6too6nt1Xx5LYQG7ZXc6iljTSDORPzWXR8MefMLKZ02hiyM9PjEkMsahqa+eX6crIz05laNJLpxblMLhyZ0Jjk2KKEcAz70WPb+N5ftvLNi0/h6oXTBmx/qLmNnz61nR+vfYuG5lYuP3MyXzj/hAGHQRpb2vjTS/u4e305m3fVkpuVzorTJ3H1wqnMGntkSaWt3dlaUc+G7VVs2BFJEqFwMwDFeVmcMiGfndUHDzv5T8jPZs6kfOZMzOfUiZF/43Xyj0Vzazsv7qrlqW0hntoW4sVdtbS2O1kZaZROHcOnl85k6QnDVz7F3fmfl/Zx0wNbqGpoPuw5Mxg/OptpxblMLcplWtFIphblMr04lymFI8nJUrKQLkoIx6hn3qriqv9azwfmTuAHV5x2RNcGqhuauX3Nm/xyfTkZaWl8asl0rjl3BqOyDx/+2FN7iF+tL+c3z+2iuqGZmSW5XL1wGitOn/iutoPl7rwdaujsQby2r44phSOZOyk5Tv6xCDe18tz2ap7aFuLPWyrYXXOI5SeP5asfOJkpRUc2LHak9h04xFfvf4VHXtvP3En5/NuKuUwoyKa86iA7qhrYETpIeVUD26saKK86SHWPhDFudDbTikcyrSiSMKYWjaQwN6vz+sqo7AzyRmT02vuT1KOEcAzaX9/I+7//JKNzMnjgnxeTN2JwE8J2Vh3k1r9u5YHNeynKzeJz74nMSNqwvZq7n9nBI6+9A8Dyk8dy9cJpLJpZpBk3A2hqbWPVk9v54ZpttLY7nz53Bp8pO37IP4m3tzu/2rCTf3/4dVrb2/mX5bP5+DnTBjxxHzjUQnlVAzuqDlIe6koU5VUNnT213uRkpjMqOyP6lXlYwuj+WH5Opi6+H8OUEI4xrW3t/K9Vz/Lirlruv+4cThw3+qhf86XdtXz3odd55u0qcjLTOdTSRmFuFlcumMxHz5rKxALdguJIVRxo5DsPvcYDm/cyIT+bGz5wMu+fMzSzvN6qDPPl+15mw45qzjm+iO9cMoepRblH/bp1jS3srDrIgUMt1De2UNfYSn1jK/WNLdQ3thJubKW+KbJd1+3x+sYWGlvaO18nPc1YNvs4rlwwmaUnlKh3cQxRQjjG3PqXrfzwsW187yNzubR08pC9rruz9o1KHnhxL0tmFfP+OeN1MXIIbNhezdcf2MJr++pYOKOIb1x8Cicc4XWXDi1t7axc9zbff/RNsjPSuPGDJ3PpGZOSotfW3NpOuKmVd+oa+eOLe/ndpt2Ewk2MG53NZaWTuOzMyUc8q0yGnxLCMeSxrfv5+M+e47LSSdzykXmJDkdi1NrWzj0bdnLrX98g3NTK1Qun8oXzTziihXsv7a7l+t+9xOsV9Xxgzni+/qGTOW5U8g7LtLS18+hr73DPhl2sezNyw6ols0q48szJvOeksWRlqNeQjJQQjhF7ag/xgR88wbjR2dx/3Tn69H4Mqm5o5ta/buWeDTspHJnF9RfM5tIzJpPWx3oIiMwMu+1vW1n15HZKRo3gWxefyntPGTeMUR+93TUHWb1xN/du3MW+A40U52Xxd2dM4oozpzC9+OiHumToKCEcA5pb27nsJ8+wbX+YBz+7WH9Ex7hX9hzgpge2sLG8hnmT8rnpQ6cwf8qYd7V7aluIL//+ZXZWH+TKBVP40oUnJrQcyNFqa3cef2M/92zYxZrX99PW7pw1vZArF0zhglPH6UNOElBCOAZ848Et/OypHdxx1em8f874RIcjQ8Dduf/FPXz3odfZX9/EpWdM4voLTqRk1AgOHGzh2w+9yuqNu5lenMt3V8zh7BlFiQ55SO2va+TeTbv57XO72Fl9kPycTC6ZP5ErF0xh9rjBXWORo6eEkOQeenkfn/nV83xs0TRu+tApiQ5Hhli4qZXbH32Tnz61neyMdK48awq/f34PNQebuebcGXz+PbNS+pNze7vzzNtV3LNhJ3/ZUkFLmzOzJJelJxxH2ewSFkwvTOmfP9koISSx7aEGLrr9SWYel8e9n16oC3Ep7K3KMN988FUef6OSUyeO5t9WzOXUifmJDmtYVTc088cX97Dm9f08u72a5tZ2sjPTWDijiKUnlFA2+zimabg0rpQQklRjSxsf/tFT7DvQyJ8+t1hT9gLA3Xlzf5gZxbmBn7t/qLmN9W9X8fgblTz+RmVnKZOpRSMpO6GEpbNLWDijWKU3hlh/CUH3QzhCW/Ye4KN3Pcu04lxOn1LA/CljOH1KARMLco54rvhND2zh9Yp6fvqxUiWDgDCzQa9RSDU5WeksO/E4lp14HADlVQ08/kYla7dW8tuNu/jFM+VkZaRx1vTCaO+hhJkleUmxJiNVqYdwhFY/t4vr73uJeZPy2fpOfefqzeNGjWD+lAJOnzKG+VPGMGdifr+fbO7btJt/uXcznymbyfUXnDhc4YscExpb2nhuRzWPb61k7RuVbNsfBiIVcJfOLuGDc8ezcIbKrAyGeghDqDLcBMBvP72Q9DRja0U9z++s4YWdtTy/s4a/bInUBspIM04aP7pbL2IMkwsjvYitFfXccP/LnDW9kP+z/IRE/jgiSSk7M50ls0pYMquEG4msc1j3Roi1W/fzxxf28OtndzKtaCSXnTmZj5w+ieNUV2lIqIdwhL7x4Bbu3bibV77xvl6frwo3dSaHF3bWsnl3LQebIzePKc7L4rTJY3hzfz0NTW089LnF+kUWOUKNLW08/Mo+7tmwiw3bq0lPM847MVJX6dxZqqs0EPUQhlAo3ExxXlafzxfljeD8k8dy/sljgUhJgzfeCfP8zhqe31nDiztrqTjQyM8+fqaSgcggZGemc8n8SVwyfxJvV4b57cZd3LdpN3979R3Gjc7m0tJJXFY6mcmFui53pNRDOEIfvWs9Ta3t3HftokG/Rnu791vKQESOTKSu0n5++9xOHn+jknaHxccXc/mZk3nvKWMZkaGZSh2GvYdgZquAk4CH3P3mXp6/Frg8+m0B8CxwPfCbaExh4HJ377t4e4KEwk1HXVZCyUBkaGWmp3HBqeO44NRx7K09xL0bd7N64y4+e88LjBmZyYrTJ3H5mZM1w2sAQz7YZmYrgHR3XwRMMLNZPdu4+53uXubuZcATwErgKuA2d18OVAAXDHVsQyEyZJTcd/cSCbIJBTl8/vxZrLt+GXd/YgGLZhZz9zM7eO9/rGPFHU+x+rld7K9vTHSYSSkePYQyYHV0ew2wGHizt4ZmNhEY6+6bgE3dnioB9schtqPS2tZOzUElBJFjQXqace4JJZx7QglV4SZ+//wefvPcTq6/7yUgMoV13uR85k0qYO6kAuZMyh/0nQlTRTx++lxgT3S7Dji+n7bXAXd2f8DMFgJj3H19z8Zmdg1wDcCUKVOGJNgjUX2wGXf6vagsIsmnKG8E/3juDD61ZDqbdx9g445qNu8+wOZdtTz0cgUAZjDruDzmTSpg3uQCTptcwOxxo8gM0KyleCSEMNBxP8Y8+hiWMrM0YJm7f6XbY4XA7cDf9baPu68kMrxEaWnpsF8ND9VHLmmohyBybDIzToue7DtUNzSzeXctm3dFvh59fT/3btoNwIiMNE6ZMLozQcybVMDUopEpuyAuHglhE5FhovXAPGBrH+2WELmYDICZZREZavqyu5fHIa6jFoouSisepYQgkioKc7NYNvs4ls2OlNBwd3bXHOqWJA7wmw27+NlTOwDIz8lk/pQCSqeO4YyphcybnM/IrOEZampta+ftUAM5melxmVYbj5/ifuAJM5sAXAhcYWY3u/uNPdq9D1jX7ftPAmcAN5jZDcCd7v7bOMQ3aJ0JQT0EkZRlZkwuHMnkwpF8cO4EIHIifnN/mM27anlxVy2bymtYuzVy29CMNOPkCaM5Y+oYSqcWUjptDGOHYI1RQ1Mrr1fU8ereOl7dV8eWvXW8XlFPc2s7n146gy9feNJRv0dPcVmHYGZjgOXAOnevGPI3IDHrEFaue4vvPPQ6L930XkZnH7t3tRKRo1d7sJnnd9awqbyGjTtq2Ly7trO22cSCHEqnjensRcweN4r0fqab769v5NW9kZP+q/vqeG1vHdurGug4PReMzOSUCaM5efzoSPKZUsiUosH1EIZ9HYK719A10yhlVIWbycpIY1TAZyKICBSMzOK8E8dy3omRqgQtbe1s2VvHpvIaNpVX88xbVfzxxb0A5I3IYP6UAs6YGil+WXeohVf31XUmgY7RB4DJhTmcPH40F582MZIEJoxmfH72sFy30JntCFSGmyjJG5GyF5REZPAy09M6L1h/cvH0zmsRm8pr2FhezcYdNXz/0Tc7P/VnpBmzxo5i6QklnSf+k8aPTug9tZUQjsBAdYxERDp0vxbx4fkTAahrbOGV3QcYnZPJrLF5SVdSQwnhCITqmxifr4J0IjI4o7MzWXR8caLD6FNwVlwMgaqGJorUQxCRFKWEEKP2dqdKdYxEJIUpIcTowKEWWttdCUFEUpYSQoy0SllEUp0SQoxC4Wgdo1xdQxCR1KSEECP1EEQk1SkhxEh1jEQk1SkhxCgUbiI9zShI4CpCEZF4UkKIUVW4mcLcLN0PWURSlhJCjELhJg0XiUhKU0KIUaXqGIlIilNCiFGoPlLpVEQkVSkhxMDdVcdIRFKeEkIMGprbaGxp1zUEEUlpSggxCNVrDYKIpD4lhBholbKIBIESQgy6VinrGoKIpC4lhBh0FrbTkJGIpDAlhBh09BAKVelURFKYEkIMQuEmxozMJDNdh0tEUpfOcDEI1evWmSKS+uKSEMxslZk9bWY39vH8tWa2Nvr1opn9JJb9EkWL0kQkCIY8IZjZCiDd3RcBE8xsVs827n6nu5e5exnwBLAylv0SJRRWD0FEUl88eghlwOro9hpgcV8NzWwiMNbdN8Wyn5ldY2YbzWxjZWXlUMbcr1C9Kp2KSOqLR0LIBfZEt+uAsf20vQ64M9b93H2lu5e6e2lJSckQhdu/xpY26ptaKdGiNBFJcfFICGEgJ7qd19d7mFkasMzdHzuS/YZbVUNkDUKRppyKSIqLx0l3E13DPfOAHX20WwI8O4j9hpXqGIlIUGTE4TXvB54wswnAhcAVZnazu/ecOfQ+YF0/+50dh9iOmOoYiUhQDHlCcPc6MysDlgO3uHsFsLmXdl8ZYL8DQx3bYKiOkYgERTx6CLh7DV0zhuK+XzypjpGIBEVSXLhNZqFwE3kjMsjOTE90KCIicaWEMIDIojQNF4lI6lNCGIAWpYlIUCghDCAUVkIQkWBQQhhAVUOzCtuJSCAoIfSjta2dmoMqbCciwaCE0I/qhmbctShNRIJBCaEfldFFaSUaMhKRAFBC6EdVdFFakYaMRCQA+kwIZlbUbftUM7skmW5aMxy6ylYoIYhI6uuvh3AvgJndBnwXOAf4vZldOxyBJQPVMRKRIImlltFZ7n4OgJl9DXiarpvapLRQuJkRGWnkjYhLyScRkaTSXw9hlpl9Gsgzs9zoY6OBwIyfdCxKM7NEhyIiEnf9JYSzgP3An4FSM8sC7gECNGSkOkYiEhx9joW4+17gD8AfzGwMMAu4CqgYptgSLlTfxPj87ESHISIyLAacdmpmXwQeJtI7KAN+Ht+QkofqGIlIkMSyDuEidz8bqHL3XwMz4hxTUmhvd6pVx0hEAiSWhFBnZlcD2Wa2FKiNc0xJ4cChFlrbXT0EEQmMWBLCx4D5QA1wMfDJeAaULDrXIKiOkYgExIAT7N19P/C/hyGWpFKpRWkiEjCxXFReNRyBJJuOOkYlGjISkYCIZcjIzOzMuEeSZDqGjFTYTkSCIpaaDFnAI2b2F6ABcHf/RHzDSrxQuIn0NKMgJzPRoYiIDItYEsIN0a9ACdU3U5SbRVqaylaISDAMOGTk7uXAbODDwKzo9/0ys1Vm9rSZ3ThAuzvM7KLo9hgze8jMnjCzH8cYf9xoUZqIBE0sF5VvA64AGoGrot/3134FkO7ui4AJfd1DwcyWAOPc/cHoQ38P/NLdlwCjzKz0CH6OIRfSojQRCZhYLiqf4e6fcPefuPvHgYFO1GXA6uj2GmBxzwZmlgncBewws4ujD1cBs82sAJgM7Oxlv2vMbKOZbaysrIwh9MEL1TdphpGIBEqsK5WvNLMZZnYVcGCA9rnAno59gbG9tLkaeBW4BVhgZp8FniRSQO9zwOtEFsIdxt1Xunupu5eWlJTEEPrguHtkyEiL0kQkQGJJCP8AnA7cDswlcjLvTxjIiW7n9fEe84GV7l4B/BJYBnwH+Cd3/yaRhPDxGGKLi3BTK02t7VqUJiKBEstF5Wrgh+7+AeCv7v6uT+49bKJrmGgesKOXNtvoKpJXCpQDI4E5ZpZO5F4MPmD0cdKxKK0oVz0EEQmOWC4q/wy4NPrt5Wb2kwF2uR/4++jF58uALWZ2c482q4BlZrYO+AxwK5H7Nq8kMiRVSKTcdkKojpGIBFEs6xBOiF5Mxt2vMbPH+mvs7nVmVgYsB26JDgtt7tGmnq4k02EPcEqsgcdTSHWMRCSAYkkI1WZ2ObABOBM4ONAO0WGl1QO1S1aVqmMkIgEUa/nrBcAPo//+QzwDSgZV0R7CmFz1EEQkOGIpf11lZv/q7m5m04HqYYgroULhJsaMzCQzPZZ8KSKSGgZMCGZ2J5HidnOB9wAVwEfiHVgiheqbVbZCRAInlo/Ap7j7fcDZ7r4YmBDnmBJOdYxEJIhiSQitZvafwJtmtgBoiXNMCVelOkYiEkCxJITLgXXA/yWy8niglcrHvFC9eggiEjyxXFSuNLNCdz9EpFhdSmtsaaO+qZUSLUoTkYCJdRrNR+MaRRLRojQRCapYE0JgbhvWUcdIQ0YiEjSxJoSEFZobbh09hCIlBBEJmFgTQl1co0giGjISkaCKZWHaCODfzezcjsfcfV1co0qgkIaMRCSgYilu9yjwItBxz0onMg01JVXWNzFqRAbZmemJDkVEZFjFkhDa3f2f4x5JktCiNBEJqliuIfzNzP7NzE4ysylmNiXuUSWQFqWJSFDF0kPouNXl9dF/HfhEfMJJvFC4iZkleYkOQ0Rk2MWyUvmwm92b2fj4hZN4oXATZ80oTHQYIiLDLpZZRt8CPkSkjpEDDcC8OMeVEK1t7dQcbKEoV0NGIhI8sVxDWAwsInILzXlAKK4RJVB1Q3TKqeoYiUgAxbowbR6RHsJcoCR+4SRWZXRRWolmGYlIAMWSED4KNANfBa4Fbo5rRAmkRWkiEmSxXFTeZ2aNRO6U9iUit9BMSVWqYyQiATZgD8HMvgg8DNwDlAE/j29IiaM6RiISZLEMGV3k7mcDVe7+a7rWJaScULiZERlp5I2IZXmGiEhqiSUh1JnZ1UC2mS0FagbawcxWmdnTZnbjAO3uMLOLBnpsuHSsUjYLzO0fREQ6xZIQ1hIZKqoBvgD0W/XNzFYA6e6+CJhgZrP6aLcEGOfuD/b32HAKNTRryqmIBFYsYyOXEJlp1Bbja5YBq6Pba4isY3izewMzywTuAh4ys4vd/Y+9Pdbzhc3sGuAagClThr6kUqi+ifH52UP+uiIix4JYEsI7wCNAOZFbaTpwXj/tc4E90e064Phe2lwNvArcAnw2WjDvYM/H3P327ju5+0pgJUBpaemQ38UtFG5izsT8oX5ZEZFjQixDRpnAHHc/z92XuXt/yQAgDOREt/P6eI/5wEp3rwB+CSzr47Fh097uVDU0UzxKM4xEJJhi6SGMBZ4zs3c6HhggKWwiMky0nsgK5629tNlG12ylUiK9j/JeHhs2tYdaaGt3LUoTkcCKZWFa6RG+5v3AE2Y2AbgQuMLMbnb37jOOVgE/NbMriPRAPkJkeKnnY8NGi9JEJOiGfMK9u9eZWRmwHLglOgS0uUebeuDSXnbv7bFhUalFaSIScHFZgeXuNXTNNDomdNQxKlEPQUQCKtZqpykvVN/RQ1BCEJFgUkKIqmpoIj3NyM/JTHQoIiIJoYQQFapvpig3i7Q0la0QkWBSQogKhZs0XCQigaaEEBUKN6mOkYgEmhJCVCjcTHGuppyKSHApIQDurh6CiASeEgIQbmqlqbVdi9JEJNCUEOhalKaLyiISZEoIdNUxUkIQkSBTQiAywwigSENGIhJgSghApeoYiYgoIUCkjpEZFGraqYgEmBICkTpGY0ZmkZGuwyEiwaUzIF11jEREgkwJAdUxEhEBJQRAdYxEREAJAYjWMdKUUxEJuMAnhMaWNsJNrRoyEpHAC3xCCHWuUlYPQUSCTQlBdYxERAAlBEL1qmMkIgJKCFQ1qI6RiAjEKSGY2Soze9rMbhyg3R1mdlGPx8aa2QvxiKs3GjISEYkY8oRgZiuAdHdfBEwws1l9tFsCjHP3B3s8dSuQM9Rx9aWyvolRIzLIzkwfrrcUEUlK8eghlAGro9trgMU9G5hZJnAXsMPMLu72+HlAA1DR2wub2TVmttHMNlZWVg5JsFqUJiISEY+EkAvsiW7XAWN7aXM18CpwC7DAzD5rZlnA14Av9fXC7r7S3UvdvbSkpGRIgq3SojQREQAy4vCaYbqGfPLoPenMB1a6e4WZ/RL4NjAG+JG715pZHMLqXSjcxMySvGF7PxGRZBWPHsImuoaJ5gE7emmzDZgR3S4FyoHzgevMbC1wmpn9Vxxie5fIkJF6CCIi8egh3A88YWYTgAuBK8zsZnfvPuNoFfBTM7sCyAQ+4u4dw0yY2Vp3/1QcYjtMS1s7NQdbNMNIRIQ4JAR3rzOzMmA5cIu7VwCbe7SpBy7t5zXKhjqu3tQ0aMqpiEiHePQQcPcaumYaJa1K1TESEekU6JXKWpQmItIl2AlBdYxERDoFOiF01DHSwjQRkYAnhFC4mREZaeRmqWyFiEiwE0J9E8V5IxjOhXAiIskq0AmhUnWMREQ6BTohhMLNlGjKqYgIEPCEUBVuoihXPQQREQhwQmhvd6oamlXHSEQkKrAJofZQC23trjUIIiJRgU0IobAWpYmIdKeEoIQgIgIEOiF01DHSNQQREQhyQlAdIxGRwwQ3IYSbyEgz8nMyEx2KiEhSCGxCqAo3U5SXRVqaylaIiECAE0JIi9JERA4T6ISgOkYiIl0CnBCaNcNIRKSbQCYEdycUbqJEM4xERDoFMiGEm1ppam2nSD0EEZFOgUwIXYvS1EMQEekQ0ISgRWkiIj0FMyFolbKIyLvEJSGY2Soze9rMbhyg3R1mdlF0O9/MHjazv5nZH8wsbgP8oQbVMRIR6WnIE4KZrQDS3X0RMMHMZvXRbgkwzt0fjD50FXCbuy8HKoALhjq2DqH6JsygMFcJQUSkQzx6CGXA6uj2GmBxzwZmlgncBewws4sB3P0Od/9btEkJsDifwsAAAAhfSURBVL+X/a4xs41mtrGysnLQAYbCTYwZmUVGeiBHzEREehWPM2IusCe6XQeM7aXN1cCrwC3AAjP7bMcTZrYQGOPu63vu5O4r3b3U3UtLSkoGHWAo3KThIhGRHuKREMJATnQ7r4/3mA+sdPcK4JfAMgAzKwRuBz4Rh7g6VYWbdUFZRKSHeCSETXQNE80DdvTSZhswI7pdCpRHLyKvBr7s7uVxiKtTKNxEkRKCiMhh4pEQ7gf+3sxuAy4DtpjZzT3arAKWmdk64DPArcAngTOAG8xsrZldHofYANUxEhHpTcZQv6C715lZGbAcuCU6LLS5R5t64NIeu94Z/YqrxpY2wk2tGjISEelhyBMCgLvX0DXTKKl0rFJWYTsRkcMFbt5lRx0jFbYTETlc8BKCylaIiPQqcAmhYGQmF5wyjvEF2YkORUQkqcTlGkIyK51WSOm0wkSHISKSdALXQxARkd4pIYiICKCEICIiUUoIIiICKCGIiEiUEoKIiABKCCIiEqWEICIiAJi7JzqGQTGzSmCw900oBkJDGM5QS/b4IPljVHxHR/EdnWSOb6q793rLyWM2IRwNM9vo7qWJjqMvyR4fJH+Miu/oKL6jk+zx9UVDRiIiAighiIhIVFATwspEBzCAZI8Pkj9GxXd0FN/RSfb4ehXIawgiIvJuQe0hiIhID0oICWJm+Wb2sJn9zcz+YGbvuqenmWWY2U4zWxv9mpOIWJORmV3b7bi8aGY/6aWNjl8fzGysmT0R3Z4SPT5rzGylmVkf+0w0s93djmevUxeDoMfx+0a3Y/K6mX25j32S//i5e8p+AauAp4Ebj6ZNnGL7DLA8un0n8KFe2pwO/HuCjl0GsBNYG/2a00e7bwDPAT9M4P/z7cAZSXb8xgJPRLczgf+J/p59op99Ymo3BLGNAf4MPB/9/tvASdHth4G5fey3Arg2AcdvIrC72+9iST/7xf3vuefx6/HcvcDERB+/wX6lbA/BzFYA6e6+CJhgZrMG0yZe3P0Od/9b9NsSYH8vzc4GLjGzJ83sV2Y2nHe4mwvc4+5l0a+XezYws1JgMbAA2G1m5w9jfB0xTATGuvumXp5OyPEzszHAL4Dc6EOfBTZGf88+aGaj+tg11nZHqw24HKgDcPcb3P216HNF9L2g6mzgM2b2jJn9R5xi6+34nQV8u9vvYmUf+w3X3/Nhx6/b+58J7HH3PX3sNyzH72ikbEIAyoDV0e01RE5cg2kTV2a2EBjj7ut7efo5YKm7LwZqgfcPY2ixnEzPBe7zyMefR4Alwxhfh+uI9LB6k6jj1/OEUUbX79nTQF8LlmJtd1Tcvc7dD/R83MwuB7a4+94+dn0YWOTuC4ETzGxuPOLj3ccv1hNpGcPw99zX8QM+T6S32pfhOn6DlsoJIRfoyNR1RLqgg2kTN2ZWSOQX6BN9NHnJ3fdFt18Hhq0HQ2wn00QfvzRgmbs/1keThBy/Xk4YsR6nhB1PM5sB/CvwhX6aPe3u9dHtuB3PXo5frCfSRB6/AuA4d3+rn2bDcvyORionhDCQE93Oo/efNZY2cRG9iLwa+LK791WT6b/NbJ6ZpQOXAJuHKz5iO5km7PhFLQGe7ef5RB6/7mI9Tgk5ntEhmnuIXLfo7ZNvh7+Y2XgzGwm8D3hlOOIj9hNpIn8fLwYeGqBNoo5fzFI5IWyiq8s4D9gxyDbx8kngDOCG6IyDr5vZzT3afBP4b+BF4Bl3f2QY44vlZJrI4weRP6p1AGZ2cpIdv+5iPU6JOp5fAqYAt0d/F5ea2Xlm9s892n0DeAxYD/zY3bcOU3yxnkgT+fvY+bsIkGTHL2YpuzDNzEYDTwCPAhcCVwCXuvuN/bQ5e4BPSIFhZqcCvwYMeAD4f8At7v6pbm3SiBy/jcAFwAXuvj0B4SYlM1vr7mVmNpXIp8dHgEVExsSXAie7+w+7tX9XO3dvG/7Ik0O347eMyHWiZmClu//QzE4GPqq/56GVsgkBOrvCy4F17l4x2DbSNzPLAT5AZAre24mOJ1mZ2QQin17/0t9JKtZ20jv9PR+dlE4IIiISu1S+hiAiIkdACUFERAAlBJEjZmb/OcDzN5lZ2UCPDUEcL3Sri7N8KF9bgmk4SyGIpAR372/x1rAwsyJgq7tfkehYJHXoorKkNDO7iUjRuMVAPpGpsRUDtSGy0vVu4DjgZXe/rlv7te5eFt3OAX5PpAbQW8DLQFYvr/dPRIrt5QP7gKvcvc3MbgdOI7Ia/Gp3rzGztcAfgY+7+9xo9dG7galAC5EiaecAPwbKo7Fe6e6H1dYROVIaMpIgON7dlxJZV/FEt2GWtWb2tV7anAdcA7zi7ucC4/spl3AikUqc5wAz3f07fbweRArXLQUOABeZ2QeBbHdfAvwO+GK03XjA3b3jPQuJFBtcCnyVSFJ5G3hPdN+1wMcGe3BEOmjISILg7ui/+4lUzfx59yejPYTubbKA2cCi6Lh/AZESzC/18tp7iKw4Xwd8v4/37LjXRUeZjeeBmUB6t8eeJfLJHyIJ4wcdL+TuVWb2cyIllyuI1BuqINJbgEg5h/f2+pOLHAH1ECQIGgbRZivwn9GhoRuJ3BuiNxcA33L3he7+qwHe84zov3OJlFXYQmTVMtF/t0S3D7p7e8dOZjYZqHL39xFJQCuI3MPgomiTS0lcnSZJIUoIIr27C7jQzNYRGf/f1Ue7F4jUAFpjZr+JlvzoyxIze5xIFc4/uvufgEPRO2/9HfC9PvarIDLE9BSR4adHgNuI1MF6BWgicv8AkaOii8oiR8HM/hG4ksjwTQtwq7uvTWhQIoOkhCAiIoCGjEREJEoJQUREACUEERGJUkIQERFACUFERKKUEEREBID/D5mA6ASZ8H0xAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#KNN模型\n",
    "#在KNN的回归模型当中，我们没法确定n_neighbors，因此需要最优化这个参数。\n",
    "#分别计算n_neighbors=[1,2,...,19,20]\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "score=[]\n",
    "for n_neighbors in range(1,21):\n",
    "    knn = KNeighborsRegressor(n_neighbors, weights = 'uniform' )\n",
    "    knn_predict = cross_val_predict(knn, x_train, y_train, cv=5)\n",
    "    knn_score = cross_val_score(knn, x_train, y_train, cv=5)\n",
    "    knn_meanscore = knn_score.mean()\n",
    "    score.append(knn_meanscore)\n",
    "plt.plot(score)\n",
    "plt.xlabel('n-neighbors5')\n",
    "plt.ylabel('mean-score5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "#从上图可以看出，随着neighbors主键增大，模型预测能力逐渐增强，但是当大于3以后，趋于下降，因此可以选择3\n",
    "n_neighbors=3\n",
    "knn = KNeighborsRegressor(n_neighbors, weights = 'uniform' )\n",
    "knn_predict = cross_val_predict(knn, x_train, y_train, cv=5)\n",
    "knn_score = cross_val_score(knn, x_train, y_train, cv=5)\n",
    "knn_meanscore = knn_score.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'mean-score')"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#决策树预测房价\n",
    "#和KNN类似，这里没法确定决策树的深度，因此令最大深度分别是1至10。\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "score=[]\n",
    "for n in range(1,11):\n",
    "    dtr = DecisionTreeRegressor(max_depth = n)\n",
    "    dtr_predict = cross_val_predict(dtr, x_train, y_train, cv=5)\n",
    "    dtr_score = cross_val_score(dtr, x_train, y_train, cv=5)\n",
    "    dtr_meanscore = dtr_score.mean()\n",
    "    score.append(dtr_meanscore)\n",
    "plt.plot(np.linspace(1,10,10), score)\n",
    "plt.xlabel('max_depth')\n",
    "plt.ylabel('mean-score')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "#发现depth为3的时候，分数较高，因此取3\n",
    "n=3\n",
    "dtr = DecisionTreeRegressor(max_depth = n)\n",
    "dtr_predict = cross_val_predict(dtr, x_train, y_train, cv=5)\n",
    "dtr_score = cross_val_score(dtr, x_train, y_train, cv=5)\n",
    "dtr_meanscore = dtr_score.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>lr</th>\n",
       "      <th>linear_svr</th>\n",
       "      <th>poly_svr</th>\n",
       "      <th>rbf_svr</th>\n",
       "      <th>knn</th>\n",
       "      <th>dtr</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.414941</td>\n",
       "      <td>0.461494</td>\n",
       "      <td>0.351207</td>\n",
       "      <td>0.580688</td>\n",
       "      <td>0.553350</td>\n",
       "      <td>0.330511</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.827420</td>\n",
       "      <td>0.710458</td>\n",
       "      <td>0.896341</td>\n",
       "      <td>0.749003</td>\n",
       "      <td>0.857852</td>\n",
       "      <td>0.828692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.536074</td>\n",
       "      <td>0.432209</td>\n",
       "      <td>0.621532</td>\n",
       "      <td>0.556897</td>\n",
       "      <td>0.603873</td>\n",
       "      <td>0.519545</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.737917</td>\n",
       "      <td>0.598857</td>\n",
       "      <td>0.729163</td>\n",
       "      <td>0.714390</td>\n",
       "      <td>0.822351</td>\n",
       "      <td>0.824205</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.774376</td>\n",
       "      <td>0.577976</td>\n",
       "      <td>0.820999</td>\n",
       "      <td>0.730675</td>\n",
       "      <td>0.776040</td>\n",
       "      <td>0.778124</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         lr  linear_svr  poly_svr   rbf_svr       knn       dtr\n",
       "0  0.414941    0.461494  0.351207  0.580688  0.553350  0.330511\n",
       "1  0.827420    0.710458  0.896341  0.749003  0.857852  0.828692\n",
       "2  0.536074    0.432209  0.621532  0.556897  0.603873  0.519545\n",
       "3  0.737917    0.598857  0.729163  0.714390  0.822351  0.824205\n",
       "4  0.774376    0.577976  0.820999  0.730675  0.776040  0.778124"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#接下来把分数汇总\n",
    "evaluating = {\n",
    "        'lr':lr_score,\n",
    "        'linear_svr':linear_svr_score,\n",
    "        'poly_svr':poly_svr_score,\n",
    "        'rbf_svr':rbf_svr_score,\n",
    "        'knn':knn_score,\n",
    "        'dtr':dtr_score\n",
    "        }\n",
    "evaluating = pd.DataFrame(evaluating)\n",
    "evaluating"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x12eeb2130>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "evaluating.plot.kde(alpha=0.6,figsize=(8,7))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/plotting/_matplotlib/tools.py:298: MatplotlibDeprecationWarning: \n",
      "The rowNum attribute was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use ax.get_subplotspec().rowspan.start instead.\n",
      "  layout[ax.rowNum, ax.colNum] = ax.get_visible()\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/plotting/_matplotlib/tools.py:298: MatplotlibDeprecationWarning: \n",
      "The colNum attribute was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use ax.get_subplotspec().colspan.start instead.\n",
      "  layout[ax.rowNum, ax.colNum] = ax.get_visible()\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/plotting/_matplotlib/tools.py:304: MatplotlibDeprecationWarning: \n",
      "The rowNum attribute was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use ax.get_subplotspec().rowspan.start instead.\n",
      "  if not layout[ax.rowNum + 1, ax.colNum]:\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/plotting/_matplotlib/tools.py:304: MatplotlibDeprecationWarning: \n",
      "The colNum attribute was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use ax.get_subplotspec().colspan.start instead.\n",
      "  if not layout[ax.rowNum + 1, ax.colNum]:\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x12eea8a90>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x12efeef10>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x12f0ec400>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x12f117850>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x12f142cd0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x12f17e0a0>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x504 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "evaluating.hist(color='k',alpha=0.6,figsize=(8,7))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.5561987519865133,\n",
       " 0.652070079568745,\n",
       " 0.6560537066995102,\n",
       " 0.6570903228144525,\n",
       " 0.6571292692181007]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAD2CAYAAADcUJy6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8GearUAAAcxUlEQVR4nO3de3CV953f8fdXRzfQjZsuiKux8d1gbCEIxbHshNpO7DjGdozR1NPdpp7ppu60f2ybtJ50ZsfbmXoy2ensrNuSJZ1MIpHgeOPY2TqOEy+1E8IBYRsMtuMrOggQiJtuoNvRt3/ogIR8hI6EdJ5z+bxmNDw85/dIHx4dfXj0+52LuTsiIpJ5coIOICIi00MFLyKSoVTwIiIZSgUvIpKhVPAiIhkqN+gAF8ybN8+XLl0adAwRkbSyd+/ek+5eHu+2lCn4pUuX0tTUFHQMEZG0YmbNY92mKRoRkQyVUMGb2VYz22lmT48z7jkze2C8fSIiMv3GLXgz2wiE3H0dUG1my8cYdwdQ5e4vX26fiIgkRyJX8HXA9tj268D60QPMLA/4AXDIzB4ca1+c4540syYza2pra5tEfBERGUsiBV8EHIltdwCVccY8AbwHPAvUmtlTY+y7hLtvcfcad68pL4+7CCwiIpOUSMF3ATNi28VjHLMK2OLurcBPgLvG2CciIkmSSMHvZXhaZiVwKM6Yj4Flse0aoHmMfSIikiSJPA7+ReBNM6sG7gM2mdkz7j7yETVbgR+a2SYgD3iEoemc0ftEJMW5O/1Rpy86SN/AiI9olL6BUfuj0difPmJslMERr0I++gXJx3uJ8tE3+4jP8PnbEj823u2XyzWVX+tzX3bUwddWlXD/iuqxw03SuAXv7h1mVgdsAJ6NTbnsGzWmE3g0zuHx9olITHQwVowXSvNzpRpnfzRK/4DTG6eA+2NF23vJ8cP7+wYGRxw3Yn/00q8p089sePv+FdXBFDyAu59h+JE0IhnN3Tl7rp/Wjh6Od/RworOXc70DF69qe0eX6oir2t4xSnXk7f0jSjs6OHVvuBPKMfJDOeSFjPzcEAW5OeTn5pAfGvpzaH8OZfl55IdyLt5+YX9+KDT0Z24O+Rf35ZCfG2//yH055OfaJftCI9sLYPRfL38zNmqAXXLb6GNHjR39yT73ucc+/kpyxT1+vDDTLGVeqkAkGbp6BzgeK+6hj96hEu/oHS70jt5xr2IvlObnC3So5ApCOczIC1E2I294f2zcJcU6signUKAX94/IEcoJtkwk9ajgJSP0DkQ5ESvr4xf/HFHinT0cb++huy/6uWOLC3KpKC2gqrSQ1UvnUFFaQGVJIVVlhVSWFlBRUkhRQe7FUs0LWeBXZiKJUMFLShuIDnKqu4/jHT20tvdwvLOXE7Hibu0Y3j5zrv9zx+bn5lAZK+sbqkqpu7Zi6O+lhRcLvaK0kOIC/RhIZtI9WwLh7pw513/xKnvkFMnxjl5OdA4V+smuXkZPU+cYlJcMFfSiOTOpWTqbypJCKssKqSwtvFjqs2bm6UpbspoKXqbcxXnu9p6hqZFLpkx6LzvPPacon4qSoavsG6pKh6ZISoeKuypW3nOLCzTfLJIAFbwkrKc/Slvn8Dx3a0fPxSmSkSU+1jz3hemRC/PcVaXDV9wVJUPTJgW5oQD+ZSKZSQUvF+e5W9tjZR2b5x495z3uPHd1KXXXDc9zXyxvzXOLBEI/dVlmIDrI937zIR+f6Lp4xR1vnjuUY5QXF1BZWnBxnvvCouSF4q4qLaRshua5RVKVCj7L/Pb94/yv//cJ11QUs3D2DG6cPzzPPXLKRPPcIulPBZ9lGsIRqssKefXff1EFLpLh9J6sWaT5VDdvfnSSx1YvVrmLZAEVfBZp3B0hlGM8tnpR0FFEJAlU8FmidyDK800tfPmGCqrKCoOOIyJJoILPEr8+0Mrp7j7q1ywJOoqIJIkKPks0hiMsnjOT9dfMCzqKiCSJCj4LfHyik/Bnp3m8djE5WlwVyRoq+CzQEI6QFzIerVkYdBQRSSIVfIbr6Y/ywt4W7r15PvOKC4KOIyJJpILPcL/af4yOngE21y4OOoqIJJkKPsM1hJtZVl7E2mVzgo4iIkmmgs9gB4+283bkLPVrlugFwUSykAo+gzWGIxTk5vDwbQuCjiIiAVDBZ6iu3gFefPsIX10xn1kz84OOIyIBUMFnqJfeOUp3X1TPXBXJYir4DOTuNISbub6qhNsWzwo6jogERAWfgfa3tHPwaAf1a7W4KpLNVPAZqCHczMz8EF+/tTroKCISIBV8hmk/389L+47y4K3VlBTmBR1HRAKkgs8wv3irhZ7+QTbXanFVJNup4DOIu9O4O8KKhWXcsrAs6DgiErCECt7MtprZTjN7epxxz5nZA6P2VZrZ21cSUhLT1HyGD493Ub9GrzsjIgkUvJltBELuvg6oNrPlY4y7A6hy95dH3fQ9YMYVJ5VxNexqpqQglwdWanFVRBK7gq8Dtse2XwfWjx5gZnnAD4BDZvbgiP13A91Aa7xPbGZPmlmTmTW1tbVNMLqMdLq7j//7bisbb1vAzPzcoOOISApIpOCLgCOx7Q6gMs6YJ4D3gGeBWjN7yszyge8C3x7rE7v7Fnevcfea8vLyiSWXS7ywt4W+6CCb9cxVEYlJ5FKvi+EplmLi/6ewCtji7q1m9hPgr4HZwN+5+1k92WZ6DQ4OLa7WLJnNdVUlQccRkRSRyBX8XoanZVYCh+KM+RhYFtuuAZqBLwPfMrMdwK1m9vdXlFTG9MdPT/HZyW7q12pxVUSGJXIF/yLwpplVA/cBm8zsGXcf+YiarcAPzWwTkAc84u4XpnUwsx3u/s2pDC7DGsLNzJqZx303zw86ioikkHEL3t07zKwO2AA86+6twL5RYzqBRy/zOequLKaM5URnD785eJx/uW4phXmhoOOISApJ6OEW7n6G4UfSSAp5vqmFgUHncT32XURG0TNZ01h00GkMR1h39VyuLi8OOo6IpBgVfBp748M2jpw9rzf1EJG4VPBprCEcYV5xPhtujPfUBBHJdir4NHX07Hle/+A436hZRH6uvo0i8nlqhjT10z2HceDxWi2uikh8Kvg0NBAd5Gd7Itx5bTmL5swMOo6IpCgVfBr63QcnON7Ry2ZdvYvIZajg01BDOEJVaSF3X18RdBQRSWEq+DQTOXWONz5sY1PtInJD+vaJyNjUEGmmcXeEUI6xabWmZ0Tk8lTwaaRvYJDnmw5z9/UVVJUVBh1HRFKcCj6NvHqwlVPdfXrPVRFJiAo+jTSEm1k4ewZfXK53vxKR8ang08THJ7rY9elpNq9ZTE6O3iFLRMangk8T23ZHyM0xHr19UdBRRCRNqODTQE9/lJ/vbeGem6soLykIOo6IpAkVfBr4x/3HaD/fr8VVEZkQFXwaaAg3s2xeEV9YNjfoKCKSRlTwKe79Yx28FTnL5jWLMdPiqogkTgWf4hrDEfJzc3j4toVBRxGRNKOCT2HdvQP84u0j3H/LfGYX5QcdR0TSjAo+hb287yhdvQNs1uKqiEyCCj6FNYQjXFdZwu1LZgcdRUTSkAo+Re1vOcu7R9qpX6vFVRGZHBV8imrYFWFGXoivr1oQdBQRSVMq+BTU0dPPS/uO8rWV1ZQW5gUdR0TSlAo+Bb349hHO90epX6vFVRGZPBV8inF3GnZFuGVBGSsWzgo6joikMRV8itnbfIY/He/U686IyBVTwaeYxnCE4oJcHlhZHXQUEUlzCRW8mW01s51m9vQ4454zswdi22Vm9oqZvWZmvzAzPRVzHGe6+/jVu8d4aNUCigpyg44jImlu3II3s41AyN3XAdVmtnyMcXcAVe7+cmxXPfB9d98AtAL3TlHmjPXCWy30DQzqmasiMiUSuYKvA7bHtl8H1o8eYGZ5wA+AQ2b2IIC7P+fur8WGlAMn4hz3pJk1mVlTW1vbJOJnDnenMRzh9iWzuWF+adBxRCQDJFLwRcCR2HYHUBlnzBPAe8CzQK2ZPXXhBjP7AjDb3XeNPsjdt7h7jbvXlJdn9xtJ//HTU3x6spvNtbp6F5GpkUjBdwEzYtvFYxyzCtji7q3AT4C7AMxsDvC3wJ9fedTM1hCOUDYjj6+umB90FBHJEIkU/F6Gp2VWAofijPkYWBbbrgGaY4uq24HvuHvzFebMaG2dvbx6oJVHbl9IYV4o6DgikiESKfgXgX9hZt8HvgEcNLNnRo3ZCtxlZm8AfwF8D/hXwO3AfzGzHWb22BTmzijbmw4zMOhaXBWRKTXuY/HcvcPM6oANwLOxaZh9o8Z0Ao+OOvR/xj7kMgYHnW27I6xdNoery4uDjiMiGSShx8G7+xl33x4rd5lCb3zURsuZ89SvWRJ0FBHJMHoma8AawhHmFuVzz01VQUcRkQyjgg/Qsfbz/O7943xj9SLyc/WtEJGppVYJ0M/2HGbQ4fHVWlwVkamngg/IQHSQn+4+zBevLWfx3JlBxxGRDKSCD8jrH5ygtaNHLwssItNGBR+QhnCEytICvnR9RdBRRCRDqeADcPj0Od74qI3HVi8mN6RvgYhMD7VLALbtjmDAptWLgo4iIhlMBZ9kfQODbG86zN3XV1I9a8b4B4iITJIKPsl+814rJ7v6qF+rxVURmV4q+CRrDEdYMGsGX1ye3a9/LyLTTwWfRJ+0dbHzk1NsXrOYUI4FHUdEMpwKPom2hSPk5hiP1iwMOoqIZAEVfJL09Ef5+Vst3HNTFRUlhUHHEZEsoIJPklcOHOPsuX69qYeIJI0KPkkadkW4al4RX1g2N+goIpIlVPBJ8KfWTpqaz7C5djE5WlwVkSRRwSdBY7iZ/FAOD9+uxVURSR4V/DQ71zfAP7x1hK/cUsWcovyg44hIFlHBT7OX9x2ls3eA+rV6z1URSS4V/DRrCEe4trKYmiWzg44iIllGBT+N3m1pZ39LO5trF2OmxVURSS4V/DRq3N1MYV4OD92mxVURST4V/DTp6Onnl+8c5WsrqymbkRd0HBHJQir4afLLt49wri9K/RotropIMFTw08DdaQhHuKm6lBULy4KOIyJZSgU/Dd6KnOWD1k7q1yzR4qqIBEYFPw0aws0UF+TytVurg44iIllMBT/Fzp7r41f7j/H1VdUUF+QGHUdEspgKfoq98NYR+gYG2VyrxVURCVZCBW9mW81sp5k9Pc6458zsgYkelymGFlebWbV4FjdWlwYdR0Sy3LgFb2YbgZC7rwOqzWz5GOPuAKrc/eWJHJdJdn16mk/buvXQSBFJCYlcwdcB22PbrwPrRw8wszzgB8AhM3twAsc9aWZNZtbU1tY2seQpqCHcTGlhLvevmB90FBGRhAq+CDgS2+4AKuOMeQJ4D3gWqDWzpxI5zt23uHuNu9eUl5dPNHtKOdnVy6sHW3n49oUU5oWCjiMiklDBdwEzYtvFYxyzCtji7q3AT4C7EjwuYzzf1EJ/1KnXe66KSIpIpHT3Mjy9shI4FGfMx8Cy2HYN0JzgcRlhcNBp3N3MmqvmcE1FSdBxREQASOSB2i8Cb5pZNXAfsMnMnnH3kY+M2Qr80Mw2AXnAI0DnqOPWTm301PHmxyc5fPo8f3nP9UFHERG5aNyCd/cOM6sDNgDPxqZh9o0a0wk8OvrYUce1T0XgVNQYbmZOUT733BRveUJEJBgJPdXS3c8w/IiYhE32uHTS2t7Db98/wTfvuIqCXC2uikjqyOiFz2T42Z7DRAedzbVaXBWR1KKCvwID0UF+uifCHcvnsWRuUdBxREQuoYK/Ajv+1Max9h49NFJEUpIK/go0hJupKCngSzdocVVEUo8KfpIOnz7Hjg/b2LR6EXkhnUYRST1qpkn66Z4IBjymxVURSVEq+Enojw7ysz0t3HVdBQtmzRj/ABGRAKjgJ+G1945zsquX+rW6eheR1KWCn4SGcDMLZs3gzmsrgo4iIjImFfwEfXaymz98fIpNqxcRyrGg44iIjEkFP0HbdkcI5RiPrV4UdBQRkctSwU9AT3+U55sO889vrKSitDDoOCIil6WCn4BfH2jlzLl+veeqiKQFFfwENIYjLJk7k3VXzw06iojIuFTwCfrweCe7D51mc+1icrS4KiJpQAWfoMZwhPxQDo/cvjDoKCIiCVHBJ+B8X5QX3mrhvluqmFtcEHQcEZGEqOAT8PL+o3T2DOhNPUQkrajgE9AQjnBNRTG1V80JOoqISMJU8OM4cKSdfYfPUr9mMWZaXBWR9KGCH0dDOEJhXg4bV2lxVUTSiwr+Mrp6B3jpnSPcv6Kaspl5QccREZkQFfxlvPj2Ebr7onrPVRFJSyr4Mbg7DeEIN84v5dZFs4KOIyIyYSr4Mbx9+CzvH+ugfq0WV0UkPangx9AYjlCUH+LBWxcEHUVEZFJU8HG0n+vn5X1HeXDVAooLcoOOIyIyKSr4OF54q4XegUE9c1VE0poKfpShxdVmbl00i5sXlAUdR0Rk0lTwo+z+7DSftHWzWQ+NFJE0l1DBm9lWM9tpZk+PcXuumUXMbEfs4xYzyzez7bG//4OZpcUzhRrCEUoKc3lgRXXQUURErsi4BW9mG4GQu68Dqs1seZxhK4Bt7l4X+3gXuBd4x93rgPeBB6cw97Q42dXLKweO8fBtC5mRHwo6jojIFUnkCr4O2B7bfh1YH2fMWuAhM/u9mTWYWS5wClhuZsXATcBHow8ysyfNrMnMmtra2ib1D5hKP9/bQn/U9cxVEckIiRR8EXAktt0BVMYZswe4093XA2eBrwAHgXzg3wHdwKejD3L3Le5e4+415eXlk4g/dQYHnW27I9QuncPyypJAs4iITIVECr4LmBHbLh7jmP3ufiy2/QGwHPhL4L+7+38DXgC+c4VZp9UfPjlJ86lz1K/V1buIZIZECn4vw9MyK4FDccb82MxWmlkIeAjYB8wEbondvg7wK4s6vRp2RZhTlM+9N1cFHUVEZEok8jTNF4E3zawauA/YZGbPuPvIR9T8FdAIGPCSu//WzD4DtpnZFuAAsHGKs0+Z4x09vPb+cb65/ioKcrW4KiKZYdyCd/cOM6sDNgDPunsrQ1foI8ccYOiRNCP3fQLUTl3U6bN9z2Gig87jeuaqiGSQhF5oxd3PMPxImowSjS2urr9mHkvnFQUdR0RkymT9M1l3/OkER9t79NBIEck4WV/wDeEI5SUFfPnGeI/+FBFJX1ld8C1nzvFPfzrBYzWLyAtl9akQkQyU1a32sz2HAdhUuyjgJCIiUy9rC74/OshP9xzmrusqWDh7ZtBxRESmXNYW/O/eP05bZ6/e1ENEMlbWFnxDOEJ1WSF3XV8RdBQRkWmRlQV/6GQ3b350kk21iwnlWNBxRESmRVYW/LbdEUI5xmOrtbgqIpkr6wq+dyDK83tb+PINFVSWFgYdR0Rk2mRdwf/6QCunu/uoX7Mk6CgiItMq6wq+IRxh8ZyZrL9mXtBRRESmVVYV/EfHO9n92Wk2r1lMjhZXRSTDZVXBN+6OkBcyHrl9YdBRRESmXdYU/Pm+KC/sbeHem+czr7gg6DgiItMuawr+V/uP0tEzoJcFFpGskTUF3xCOcHV5EWuumhN0FBGRpMiKgj94tJ13Dp9l85olmGlxVUSyQ1YUfGM4QkFuDg/ftiDoKCIiSZPxBd/VO8CLbx/h/hXVzJqZH3QcEZGkyfiC/+U7R+jui1K/VourIpJdMrrg3Z3GcITrq0pYtWhW0HFERJIqowt+X0s7B492UL9Wi6sikn0yuuAbdjUzMz/E12+tDjqKiEjSZWzBt5/v5+X9R3nw1gWUFOYFHUdEJOkytuB/8VYLPf2DeuaqiGStjCx4d6chHGHlwjJuXlAWdBwRkUBkZMHvOXSGj0506U09RCSrZWTBN4SbKSnM5f6V84OOIiISmIwr+NPdfbzybisbVy1gZn5u0HFERAKTUMGb2VYz22lmT49xe66ZRcxsR+zjlhG3/Ucze2qqAo/n53sP0xcdZLOmZ0Qky41b8Ga2EQi5+zqg2syWxxm2Atjm7nWxj3djx14DfA14bipDj2VwcOiZq6uXzua6qpJkfEkRkZSVyBV8HbA9tv06sD7OmLXAQ2b2ezNrMLMLcyP/G/gQeNzMQqMPMrMnzazJzJra2tomnn6UnZ+c4tCpc1pcFREhsYIvAo7EtjuAyjhj9gB3uvt64CzwFTP7EjAT+C5QDDw7+iB33+LuNe5eU15ePpn8l2jc3czsmXnce3PVFX8uEZF0l8gqZBcwI7ZdTPz/FPa7e29s+wNgOWDAj9y9xcx+BPzhSsNezomOHn5z8Dh/9s+WUpj3uV8WRESyTiJX8HsZnpZZCRyKM+bHZrYyNg3zELAP+BhYFru9Bmi+sqiXt73pMAODzuO1euaqiAgkdgX/IvCmmVUD9wGbzOwZdx/5iJq/AhoZump/yd1/Gyv7r5rZG0AJ8MQUZ78oOuhs232YdVfPZVl58XR9GRGRtDJuwbt7h5nVARuAZ929laEr9JFjDjD0SJqR+6LAv566qGN748M2jpw9z3/+yg3J+HIiImkhoWcCufsZhh9Jk3Iaws3MKy5gw43x1n9FRLJT2j+T9ejZ87z+wQkeW72Q/Ny0/+eIiEyZtG/Ec30D3HltOZtWa3FVRGSktH+xlmsqSvg/f1YbdAwRkZST9lfwIiISnwpeRCRDqeBFRDKUCl5EJEOp4EVEMpQKXkQkQ6ngRUQylApeRCRDmbsHnQEAM2vjyl5SeB5wcoriTCXlmhjlmhjlmphMzLXE3eO+Y1LKFPyVMrMmd68JOsdoyjUxyjUxyjUx2ZZLUzQiIhlKBS8ikqEyqeC3BB1gDMo1Mco1Mco1MVmVK2Pm4EVE5FKZdAUvIiIjqOBFZNLMbI6ZbTCzeUFnGSlVcyVbWhW8mW01s51m9vSVjEl2LjPLNbOIme2IfdySxGyVZvbmZW7PM7NfxfL/eQrlWmBmLSPOWdzH+U5xpjIze8XMXjOzX5hZ/hjjknofSyRXEPcxM5sP/CNQC/zTWN+jAM7XuLlS4Gfy7cvcPmXnK20K3sw2AiF3XwdUm9nyyYwJIhewAtjm7nWxj3enO1cs22zgR0DRZYY9BTTF8t9vZiUpkmsN8NcjzlnbdOcC6oHvu/sGoBW4d/SAIO5jieQimPvYTcB/cPe/Bl4Fbhs9IKDzNW4uAvqZjPkeMCPeDVN9vtKm4IE6YHts+3Vg/STHTLVEvuZa4CEz+72ZNZhZst4qMQo8BnRcZkwdw/l3Asl4EkgiudYCf2FmfzSzv0lCJtz9OXd/LfbXcuBEnGF1JPk+lmCupN/H3P237r7LzL7I0NXyH+MMqyP55yuRXIH8TJrZ3UA3Q/9Rx1PHFJ6vdCr4IuBIbLsDqJzkmCBy7QHudPf1wFngK0nIhbt3uHv7OMOSfs4SzPUKsM7dvwBca2YrpjvXBWb2BWC2u++Kc3MQ97FEcgVyHzMzY+g/636G/uMeLZDzlUCupJ+v2NTad4FvX2bYlJ6vdCr4LoZ/rSkmfvZExgSRa7+7H4ttfwAk49fURAVxzhKx0907Y9tJO2dmNgf4W2Cs9YhAzlcCuQK5j/mQbzH029/9cYYEcr4SyBXE+fo28HfufvYyY6b0fKXKD3Mi9jL868pK4NAkx0y1RL7mj81spZmFgIeAfUnIlaggzlkiXjWz+WY2E7gHODDdXzB2hbUd+I67j/XCd0k/XwnmSvp9zMz+k5k9EfvrLIauhEcL4nwlkiuIn8kvA98ysx3ArWb293HGTO35cve0+ABKGfomfB94P/aPf2acMWUpkutmYD/wLkMLh8k+dztif94N/NtRty0BDgL/g6FfW0Mpkusuhq6s9o++bRrz/BvgDLAj9vFfU+Q+lkiupN/HgNnAa8AbwHMMLW6mwvlKJFfgP5PAjdN9vtLqmayxR19sAN5w97iLFImMCSJXKjOzaoauGl718efGs166f7+TTedrYqbyfKVVwYuISOLSaQ5eREQmQAUvIpKhVPAiIhlKBS8ikqFU8CIiGer/A6Y4p02peTlKAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#接下来想想办法，看看SVR还能不能被拯救。\n",
    "#首先对线性核进行最优化。\n",
    "#线性核我们通过更改惩罚系数C来查看对模型的影响。\n",
    "#从图上可以看出线性核默认状态为1的情况最差，而10、1000、10000相差无几\n",
    "lSVR_score=[]\n",
    "for i in [1,10,1e2,1e3,1e4]:\n",
    "    linear_svr = SVR(kernel = 'linear', C=i)\n",
    "    linear_svr_predict = cross_val_predict(linear_svr, x_train, y_train, cv=5)\n",
    "    linear_svr_score = cross_val_score(linear_svr, x_train, y_train, cv=5)\n",
    "    linear_svr_meanscore = linear_svr_score.mean()\n",
    "    lSVR_score.append(linear_svr_meanscore)\n",
    "plt.plot(lSVR_score)\n",
    "lSVR_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    }
   ],
   "source": [
    "linear_svr = SVR(kernel = 'linear', C=1000)\n",
    "linear_svr_predict = cross_val_predict(linear_svr, x_train, y_train, cv=5)\n",
    "linear_svr_score = cross_val_score(linear_svr, x_train, y_train, cv=5)\n",
    "linear_svr_meanscore = linear_svr_score.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    }
   ],
   "source": [
    "#'poly'核优化，通过尝试修改惩罚系数C和degree。\n",
    "poly_svr = SVR(kernel = 'poly')\n",
    "poly_svr_predict = cross_val_predict(poly_svr, x_train, y_train, cv=5)\n",
    "poly_svr_score = cross_val_score(poly_svr, x_train, y_train, cv=5)\n",
    "poly_svr_meanscore = poly_svr_score.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    }
   ],
   "source": [
    "rbf_svr = SVR(kernel = 'rbf', C=100, gamma=0.5)\n",
    "rbf_svr_predict = cross_val_predict(rbf_svr, x_train, y_train, cv=5)\n",
    "rbf_svr_score = cross_val_score(rbf_svr, x_train, y_train, cv=5)\n",
    "rbf_svr_meanscore = rbf_svr_score.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/plotting/_matplotlib/tools.py:298: MatplotlibDeprecationWarning: \n",
      "The rowNum attribute was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use ax.get_subplotspec().rowspan.start instead.\n",
      "  layout[ax.rowNum, ax.colNum] = ax.get_visible()\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/plotting/_matplotlib/tools.py:298: MatplotlibDeprecationWarning: \n",
      "The colNum attribute was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use ax.get_subplotspec().colspan.start instead.\n",
      "  layout[ax.rowNum, ax.colNum] = ax.get_visible()\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/plotting/_matplotlib/tools.py:304: MatplotlibDeprecationWarning: \n",
      "The rowNum attribute was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use ax.get_subplotspec().rowspan.start instead.\n",
      "  if not layout[ax.rowNum + 1, ax.colNum]:\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/plotting/_matplotlib/tools.py:304: MatplotlibDeprecationWarning: \n",
      "The colNum attribute was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use ax.get_subplotspec().colspan.start instead.\n",
      "  if not layout[ax.rowNum + 1, ax.colNum]:\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x12f2d6e20>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x12f703130>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x12f839a90>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x12f86e220>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x12f8959a0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x12f8cc0a0>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAecAAAGoCAYAAAB8Ay3tAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8GearUAAAgAElEQVR4nO3df5RkdXnv+/eHGYjYPegYOK1D0iFeJnpIYEKmo8jMLKo5zhGIHA+EYzzLZZPoudMKwYvrelZQiVEEsw4hZIni6CRIEBNmEaID6kgWONOXcfhxoCMMP8QcvTIdcSZEgo7dJ7oiPveP2n1pivqxa/feVd/q/rzWqjV7dn33/j61936+T/WuXbsUEZiZmVk6Dut3AGZmZvZ8Ls5mZmaJcXE2MzNLjIuzmZlZYlyczczMEuPibGZmlhgX52VM0hOSjut3HGZWPkk1SVP9jsOKcXE2JL1U0sX9jsPMzOpcnA3gpYCLs5lZIlyclxFJh0naKumApL8CDgc+CtwP/KKkg5JuX9B+StJ5knZI2tWvuM1scST9V0l7JZ2V5fWfSvq+pLskHTl/Crxxfr/jXs5cnJeX84DfAH4Z+DywBng/8JvAP0bEyyPijIZlPgp8Bjinl4GaWTkk1YA/AM4G/jfwOuA7wCuAo4D5nG813/rAxXl5ORW4JSJ+HBF/C/wgxzKfiYjbIuKHFcdmZuUbBT4L7I+If8nm/RNwbUT8G/AQ8JIO860PXJyXFwELf+nkZzmWubeiWMysej9P/S/mYyRtyOZ9J577xaOF40Gr+dYHLs7Ly/8EzpX0c5LeBLwsm/808POSXpw9/FmT2dLw9Yh4CPhD4MpsXqvC64KcEBfn5WU78A1gBngncBAgIn4E/A/g2zz3mZOZLRER8VXgJzz3htwSJ/+es5mZWVr8l7OZmVliXJzNzMwS4+JsZmaWGBdnMzOzxKzsdwDzjj766DjuuOP6HQZzc3MMDQ31OwwgrVggrXiWaizT09Pfj4hjSllZ4lLJeUjreKqSX2d6WuV8MsX5uOOO44EHHuh3GExNTVGr1fodBpBWLJBWPEs1Fkn7S1nRAEgl5yGt46lKfp3paZXzPq1tZmaWmELFWdJLJH1F0h2SviDpiBbtrpN0t6RLFxemmfWSpBFJe9o8f7ikL2X5/fZW88ysmKJ/Ob8VuDoiNlO/y9QLfr1E0rnAiog4FVgjaW3xMM2sVyStBm4A2n1odxHwQJbfb5S0qsU8Mytg0XcIk3QLcFVE3Nsw/xrg9ojYKek8YFVEXN/QZguwBWBkZGT99u3bFxVLGWZnZxkeHu53GEBasUBa8fQ6lpmZmZbPDQ0NMTc3l2s9o6OjbZ8fHx+fjoixroIrmaSjqP9Iyq0RUWvR5jbgkoh4TNJ7gWngPY3zImJ3w3K5c77dNi9bnn3Yad8NgpRyuFGZ+7ubnKxSnmOmVc4v6oIwSa8DVjcW5swQ8GQ2fQg4vrFBRGwDtgGMjY1FCh/gp3QhQUqxQFrx9DqWycnJls9t2LCBvXv35lrPxMREWSFVJiIOAUhq16wxv0dazGtcd+6cb7fNy5ZnHw7CvuskpRxuVOb+7iYnq7SYY6bwBWGSXgZ8HGj12dIsMP/rRsOL6cvMktMsv53zZiUpekHYEcDNwPsiotVXP6aBjdn0OuCJIn2ZWZKa5bdz3qwkRU9rvwNYD3xA0geA3cDhEbHwquwdwB5Ja4AzgVMWFamZ9YWk04ETIuITC2bfAOyUtAk4AbiP+intxnlmVkCh4hwRW4GtHdocklQDNgNXRsQPi/RlZv0xfzFYROwCdjU8t1/SZup/KX8wIp4Fms0zswIqvUNYRDxD/fS3mS0xEfE9GvK72Twz654v2DAzM0uMi7OZmVliXJzNzMwS4+JsZmaWGBdnMzOzxLg4m5mZJcbF2czMLDEuzmZmZolxcTYzM0uMi7OZmVliXJzNzMwS4+JsZmaWGBdnMzOzxLg4m5mZJcbF2czMLDEuzmZmZokpXJwljUja0+b5YyV9V9JU9jimaF9m1juSrpN0t6RLWzz/rgV5/aCkT0taKWlmwfwTex232VJSqDhLWg3cAAy1afZa4IqIqGWPfy7Sl5n1jqRzgRURcSqwRtLaxjYRsXU+r4E9wDbgJOCmBfn+cE8DN1tiFBHdLyQdBQi4NUvQZm2uBM4EZoF7I+I9TdpsAbYAjIyMrN++fXvXsZRtdnaW4eHhfocBpBULpBVPr2OZmZlp+dzQ0BBzc3O51jM6Otr2+fHx8emIGOsquBJJuga4PSJ2SjoPWBUR17doeyzwZxHxZkkXABcDTwH7gfMj4qdNlsmd8+22edny7MNO+24QpJTDjcrc393kZJXyHDOtcn5lkQ4j4hCApHbNvgJ8JCJ+JOnLkk6KiH0N69lG/V03Y2NjUavVioRTqqmpKVKIA9KKBdKKp9exTE5Otnxuw4YN7N27N9d6JiYmygqpKkPAk9n0IeD4Nm0vBLZm0/cDp0XEAUnXAmcBtzUu0E3Ot9vmZcuzDwdg33WUUg43KnN/d5OTVVrMMVPlBWF3R8SPsunHgRecHjOz5MwCR2bTw7QYIyQdBoxHxO5s1r6IOJBNO9/NFqnK4vx3kl4h6cXAG4BHKuzLzMoxDWzMptcBT7Rotwm4b8H/b5S0TtIK4BzgocoiNFsGSinOkk6X9PsNsz8M7AbuBT4VEd8soy8zq9QO4G2SrgbeDDwq6fIm7d4A3LXg/5cBNwIPAvdExJ2VR2q2hBX6zHne/MVgEbEL2NXw3G7g1YtZv5n1VkQcklQDNgNXRsRBmvwVHBHvb/j/I9Sv2DazEiyqOJvZ0hMRzwA39zsOs+XMdwgzMzNLjIuzmZlZYlyczczMEuPibGZmlhgXZzMzs8S4OJuZmSXGxdnMzCwxLs5mZmaJcXE2MzNLjIuzmZlZYlyczczMEuPibGZmlhgXZzMzs8S4OJuZmSXGxdnMzCwxLs5mZmaJcXE2MzNLTOHiLGlE0p42zx8u6UuS7pb09qL9mFlvSbouy9tLWzy/UtKMpKnscWI2/8OS7pf0id5GbLb0FCrOklYDNwBDbZpdBDwQEacCb5S0qkhfZtY7ks4FVmR5u0bS2ibNTgJuioha9nhY0hiwEXgN8F1Jr+9h2GZLjiKi+4WkowABt0ZErUWb24BLIuIxSe8FpiNid0ObLcAWgJGRkfXbt29v2+/MzEzXsTYzOjra8rnZ2VmGh4dL6SePdq9paGiIubm5XOtp95rK0utt007eWMo6Ztopcz+Nj49PR8RYGXEVIeka4PaI2CnpPGBVRFzf0OYC4GLgKWA/cD7wbuDHEfHJrFCfHRF/1GT9uXO+F/tuXp592Iscq1pKOdyozP3dTU5WKc8x0yrnVxbpMCIOAUhq12wIeDKbPgSMNFnPNmAbwNjYWNRqtbb9Tk5Odh9sExMTEy2fm5qaolMcZWr3mjZs2MDevXtzrafdaypLr7dNO3ljKeuYaSe1/bRIjXl7fJM29wOnRcQBSdcCZ2XLfXvBci/Id+gu53ux7+bl2YcDsO86SimHG5W5v7vJySot5pip8oKwWeDIbHq44r7MrBx58nZfRBzIph8H1uZczsxyqjKBpql/BgWwDniiwr7MrBx58vZGSeskrQDOAR7KuZyZ5VTotHYjSacDJ0TEwqs0bwB2StoEnADcV0ZfZlapHcAeSWuAM4G3SLo8IhZeuX0Z8NfUrzu5LSLulHQY8MeSPgackT3MrKBFFef5i8EiYhewq+G5/ZI2U383/cGIeHYxfZlZ9SLikKQasBm4MiIOUv/LeGGbR6hfsb1w3s+yK7R/C/hYRHynRyGbLUml/OXcSkR8D7i5yj7MrFwR8QwF8jYi/hW4pfyIzJYfX7RhZmaWGBdnMzOzxLg4m5mZJcbF2czMLDEuzmZmZolxcTYzM0uMi7OZmVliXJzNzMwS4+JsZmaWGBdnMzOzxLg4m5mZJcbF2czMLDEuzmZmZolxcTYzM0uMi7OZmVliXJzNzMwSU7g4S7pO0t2SLm3x/EpJM5KmsseJxcM0s17JkdsvkfQVSXdI+oKkI5zvZuUqVJwlnQusiIhTgTWS1jZpdhJwU0TUssfDiwnUzKqXM7ffClwdEZuBg8AZON/NSqWI6H4h6Rrg9ojYKek8YFVEXN/Q5gLgYuApYD9wfkT8tKHNFmALwMjIyPrt27e37XdmZqbrWJsZHR1t+dzs7CzDw8Ol9JNHu9c0NDTE3NxcrvW0e01l6fW2aSdvLGUdM+2UuZ/Gx8enI2KsjLiKyJPbDe1vAa4CfoMO+Z61z53zvdh38/Lsw17kWNVSyuFGZe7vbnKySnmOmVY5v7Jgn0PAk9n0IeD4Jm3uB06LiAOSrgXOAm5b2CAitgHbAMbGxqJWq7XtdHJysmC4zzcxMdHyuampKTrFUaZ2r2nDhg3s3bs313ravaay9HrbtJM3lrKOmXZS20+LlCe3AZD0OmB1RNwr6Vk65Dt0l/O92Hfz8uzDAdh3HaWUw43K3N/d5GSVFnPMFC3Os8CR2fQwzU+P74uIn2TTjwPNTo+ZWVry5DaSXgZ8HPjtbJbz3axERS8ImwY2ZtPrgCeatLlR0jpJK4BzgIcK9mVmvdMxtyUdAdwMvC8i9mezne9mJSpanHcAb5N0NfBm4FFJlze0uQy4EXgQuCci7iweppn1SJ7cfgewHvhAdmX27+B8NytVodPaEXFIUg3YDFwZEQdpeKccEY9Qv4LTzAZEztzeCmxtsrjz3awkRT9zJiKeoX5qy8yWEOe2Wf/5DmFmZmaJcXE2MzNLjIuzmZlZYlyczczMEuPibGZmlhgXZzMzs8S4OJuZmSXGxdnMzCwxLs5mZmaJcXE2MzNLjIuzmZlZYlyczczMEuPibGZmlhgXZzMzs8S4OJuZmSXGxdnMzCwxhYuzpOsk3S3p0sW0MbO0FM1t57tZeQoVZ0nnAisi4lRgjaS1RdqYWVqK5rbz3axciojuF5KuAW6PiJ2SzgNWRcT1BdpsAbZk/30V8M0iL6JkRwPf73cQmZRigbTiWaqx/FJEHFPSurpWNLeBkzstly2bYs5DWsdTlfw609M051cWXNkQ8GQ2fQg4vkibiNgGbCsYQyUkPRARY/2OA9KKBdKKx7FUpmhu51kuyZyHJbcPW/LrHBxFP3OeBY7MpodbrCdPGzNLS9Hcdr6blahoAk0DG7PpdcATBduYWVqK5rbz3axERU9r7wD2SFoDnAm8RdLlEXFpmzanLC7UnknplFtKsUBa8TiWahTN7Wgyb5AspX3Yjl/ngCh0QRiApNXAZuCuiDhYtI2ZpaVobjvfzcpTuDibmZlZNXzRhpmZWWKWbXHOezcjSSOSvt7PWCStlDQjaSp7nNivWBa0+6Sks6uKI288kt61YLs8KOnTfYxltaSdkvZI+lRVcVhxqR3fVUkpb6q0lHNyWRbnLu9mdBXPfUWkX7GcBNwUEbXs8XAfY0HSJuDlEfHFKuLoJp6I2Dq/XYA9VHQhSM5t8zbgcxGxCVglaaC/Z7nUpHZ8VyWlvKnSUs/JZVmcgRpwcza9i+e+AvI8kk4H5oAqL27JE8spwDmSvibpryQVvcp+0bFIOhz4c+AJSW+qKI7c8SyI61hgJCKm+xjL08CrJL0U+EVgpqJYrJgaaR3fVamRTt5UqcYSzsnlWpwb72Y00thA0hHAB4FL+h0LcD9wWkRsBH4AnNXHWCaAx4ArgddIuqiiWPLGM+9CYGufY/kasBZ4N/A48EyF8Vj3Uju+q5JS3lRpSefkci3Oee5mdAlwbUT8IIFY9kXEgWz6ceoHW79iORnYln1V5nPAeEWx5I0HSYcB4xGxu8+xfBR4Z0RcRn0//V6F8Vj3Uju+q5JS3lRpSefkci3Oee5m9HrgQklTwK9L+os+xnKjpHWSVgDnAA/1MZZvAa/MpseA/RXFkjcegE3AfRXGkTeWFwMnZvvptdRvzGHpSO34rkpKeVOlpZ2TEbHsHsBR1Avc1cA3qO/Yy9u0n+pnLMCvAfuAh4Er+hzLKuBvgLuAe4Bj+72fqL87PrffxwzwGuBR6u/o7wCGq4zJj0r2Yc+O736+zqxd5XnT79c5yDm5bG9CktLdjBzLYMSTUixWzHLZh36dg2/ZFmczM7NULdfPnM3MzJLl4mxmtkxI+pCkD/U7DuvMxTlxzZJJ0nslvbdPIZmZWcWqutOUVSgirup3DGZmVh0XZzOzZUrSX1L/rvNvApsioqobHFmXfFp7ADWe6pZUy35d5k8lfV/SXZKOzJ47S9Kjkr7bsMw7s1+6elLSHyyY/5fZL9Z8RtL/yhHLmyR9W9JT2TKHSTpB0gML2vyhpPcviP0ySVdKelrSz5WzVcysoPcBe6nfpMMS4eK8dLwO+A7wCupfzj9D0jHAx6l/D3At8F8knSzpRdR/reWUbP57JQ0vWFc3yfoR4IKs338DXhkRjwEvkvTvsjZnArcsWOYdwA+BV0fET4q8WDMrzc6IuC4i/qXfgdhzfFp76fgn6vcCD0kPAS+hXnyPBf4+a/NzwK9GxNclTVAv0JuAlwFHU7+LDmTJmrPfr1Ev5r8MfCQivpvN/zz1NwhfAl4UEf+wYJmHI+KKQq/SzMp2b78DsBfyX85Lx3fiuTvKzP8rYHdEvDwiXg78AvC3kv4P6rcn/Bfg/wb+sWFduZM1Ii4A3g8cA0xL+tXsqVuo/8X8H4EdRddvZrYcuTgvHc1u9XYvcLKkV2U/gXkH9WJ5MvWbxF9H/bT2LxTtVNKj1H+27Qrq97c9CSAi9gHHAW/k+ae0zcysA5/WXsIi4ilJ/w24jfoN/W+KiFuzHx5/D3AA+Cr1z6p/hda/XtPOh4Ep6r+teh/wxQXP7QbOzj6DNrM+i4gPNfz/d/sTiXXie2ubmZklxn85W0eSPg+c2uSpjRHxrV7HY2a21PkvZzMzs8T4gjAzM7PEJHNa++ijj47jjjuu32EwNzfH0NBQv8PoimOuXq/inZ6e/n5EHFN5RwmYz/lBOhYca/kGJU6oJtaWOR8RSTzWr18fKdi9e3e/Q+iaY65er+IFHogE8rEXj/mcH6RjwbGWb1DijKgm1lY579PaZmZmiSlUnCW9RNJXJN0h6QvZDS6atbtO0t2SLl1cmGbWS5JGJO1p8/zhkr6U5ffbW80zs2KK/uX8VuDqiNgMHATOaGwg6VxgRUScCqyR5J8iMxsAklYDN1C/sUwrF1E/HXcq8EZJq1rMM7MCFv1VKkm3AFdFxL0N868Bbo+InZLOA1ZFxPUNbbYAWwBGRkbWb9++fVGxlGF2dpbh4eHODROyVGOemZlZdD+jo6OLXgf0bhuPj49PR8RY5R21Ieko6vdlvzUiai3a3AZcEhGPSXovME39rnPPmxcRuxuWe0HOt9q2Zex/KO8YmJmZYWhoiLm5ub7HksegjAvzcZa1v6vU7f7Ps79b5fyirtaW9DpgdWNhzgxRv+cywCHg+MYGEbEN2AYwNjYWtVptMeGUYmpqihTi6MZSjXlycnLR/UxMTCx6HTCY27ioiDgEIKlds8b8Hmkxr3HdL8j5Vtu2jP0P5R0Dk5OTbNiwgb179/Y9ljwG5Zidj7Os/V2lbvf/YvZ34QvCJL2M+m8Ft/psaRY4MpseXkxfZpacZvntnDcrSdELwo4AbgbeFxH7WzSbBjZm0+so9qMKZpamZvntnDcrSdHT2u8A1gMfkPQB6r8+dHhELLwqewewR9Ia6r/re8qiIjWzvpB0OnBCRHxiwewbgJ2SNgEnUP9FsiebzDOzAgoV54jYCmzt0OaQpBqwGbgyIn5YpC8z64/5i8EiYhewq+G5/ZI2U/9L+YMR8SzQbJ6ZFVDp7Tsj4hnqp7/NbImJiO/RkN/N5plZ93zBhpmZWWJcnM3MzBLj4mxmZpYYF2czM7PEuDibmZklxsXZzMwsMS7OZmZmiXFxNjMzS4yLs5mZWWJcnM3MzBLj4mxmZpYYF2czM7PEuDibmZklxsXZzMwsMS7OZmZmiSlcnCWNSNrT5vljJX1X0lT2OKZoX2ZmZsvJyiILSVoN3AAMtWn2WuCKiNhapA8z6w9J1wH/HtgZEZc3ef5dwO9k/30pcB9wIfD/Zg+AiyLi4R6Ea7YkFf3L+VnqyXmoTZtTgAsk3SPpzwr2Y2Y9JOlcYEVEnAqskbS2sU1EbI2IWkTUgD3ANuAk4Kb5+S7MZoujiCi+sDSVJWiz58aBByLiR5K+DLwvIvY1tNkCbAEYGRlZv3379sKxlGV2dpbh4eF+h9GVpRrzzMzMovsZHR1d9Dqgd9t4fHx8OiLGKu+oBUnXALdHxE5J5wGrIuL6Fm2PBf4sIt4s6QLgYuApYD9wfkT8tMkyL8j5Vtu2jP0P5R0DMzMzDA0NMTc31/dY8hiUcWE+zrL2d5W63f959nernC90WjunuyPiJ9n048Ba4HnFOSK2UX/XzdjYWNRqtQrDyWdqaooU4ujGUo15cnJy0f1MTEwseh0wmNu4oCHgyWz6EHB8m7YXAvMfW90PnBYRByRdC5wF3Na4QLOcb7Vty9j/UN4xMDk5yYYNG9i7d2/fY8ljUI7Z+TjL2t9V6nb/L2Z/V3m19t9JeoWkFwNvAB6psC8zK8cscGQ2PUyLMULSYcB4ROzOZu2LiAPZ9PybcTMrqJTiLOl0Sb/fMPvDwG7gXuBTEfHNMvoys0pNAxuz6XXAEy3abaJ+Idi8GyWtk7QCOAd4qLIIzZaBRZ3Wnv+8OSJ2AbsantsNvHox6zezntsB7JG0BjgTeIukyyPi0oZ2bwDuWvD/y4C/BgTcFhF39iRasyWqys+czWzARMQhSTVgM3BlRBykyV/BEfH+hv8/Qv2KbTMrgYuzmT1PRDwD3NzvOMyWM9++08zMLDEuzmZmZolxcTYzM0uMi7OZmVliXJzNzMwS4+JsZmaWGBdnMzOzxLg4m5mZJcbF2czMLDEuzmZmZolxcTYzM0uMi7OZmVliXJzNzMwS4+JsZmaWGBdnMzOzxLg4m5mZJaZwcZY0ImlPm+cPl/QlSXdLenvRfsystyRdl+XtpS2eXylpRtJU9jgxm/9hSfdL+kRvIzZbegoVZ0mrgRuAoTbNLgIeiIhTgTdKWlWkLzPrHUnnAiuyvF0jaW2TZicBN0VELXs8LGkM2Ai8BviupNf3MGyzJUcR0f1C0lGAgFsjotaizW3AJRHxmKT3AtMRsbuhzRZgC8DIyMj67du3t+13Zmam61i7NTQ0xNzcXMd2o6OjlceS1+zsLMPDw/0Ooyt5Yi5jf5e1n55++ulcx0UnneIZHx+fjoixRXdUkKRrgNsjYqek84BVEXF9Q5sLgIuBp4D9wPnAu4EfR8Qns0J9dkT8UZP1vyDnWx0LZeV7WcfAzMxM7vGh6ljyGJRxYT7OXozvi9Xt/s+zv1vl/MruQquLiEMAkto1GwKezKYPASNN1rMN2AYwNjYWtVqtbb+Tk5PdB9ulDRs2sHfv3o7tJiYmKo8lr6mpKTptu9TkibmM/V3WfvrsZz+b67joJKXjpoXGvD2+SZv7gdMi4oCka4GzsuW+vWC5F+Q7NM/5VsdCWfle1jafnJzMPT5UHUsegzIuzMfZi/F9sbrd/4vZ31VeEDYLHJlND1fcl5mVI0/e7ouIA9n048DanMuZWU5VJtA09c+gANYBT1TYl5mVI0/e3ihpnaQVwDnAQzmXM7OcCp3WbiTpdOCEiFh4leYNwE5Jm4ATgPvK6MvMKrUD2CNpDXAm8BZJl0fEwiu3LwP+mvp1J7dFxJ2SDgP+WNLHgDOyh5kVtKjiPH8xWETsAnY1PLdf0mbq76Y/GBHPLqYvM6teRBySVAM2A1dGxEHqfxkvbPMI9Su2F877WXaF9m8BH4uI7/QoZLMlqZS/nFuJiO8BN1fZh5mVKyKeoUDeRsS/AreUH5HZ8uOLNszMzBLj4mxmZpYYF2czM7PEuDibmZklxsXZzMwsMS7OZmZmiXFxNjMzS4yLs5mZWWJcnM3MzBLj4mxmZpYYF2czM7PEuDibmZklxsXZzMwsMS7OZmZmiXFxNjMzS4yLs5mZWWIKF2dJ10m6W9KlLZ5fKWlG0lT2OLF4mGbWKzly+yWSviLpDklfkHSE892sXIWKs6RzgRURcSqwRtLaJs1OAm6KiFr2eHgxgZpZ9XLm9luBqyNiM3AQOAPnu1mpFBHdLyRdA9weETslnQesiojrG9pcAFwMPAXsB86PiJ82tNkCbAEYGRlZv3379rb9zszMdB1rt4aGhpibm+vYbnR0tPJY8pqdnWV4eLjfYXQlT8xl7O+y9tPTTz+d67jopFM84+Pj0xExtuiOCsqT2w3tbwGuAn6DDvmetX9Bzrc6FsrK97KOgZmZmdzjQ9Wx5DEo48J8nL0Y3xer2/2fZ3+3yvmV3YX2/xsCnsymDwHHN2lzP3BaRByQdC1wFnDbwgYRsQ3YBjA2Nha1Wq1tp5OTkwXDzW/Dhg3s3bu3Y7uJiYnKY8lramqKTtsuNXliLmN/l7WfPvvZz+Y6LjpJ6bhpIU9uAyDpdcDqiLhX0rN0yHdonvOtjoWy8r2sbT45OZl7fKg6ljwGZVyYj7MX4/tidbv/F7O/ixbnWeDIbHqY5qfH90XET7Lpx4Fmp8fMLC15chtJLwM+Dvx2Nsv5blaioheETQMbs+l1wBNN2twoaZ2kFcA5wEMF+zKz3umY25KOAG4G3hcR+7PZznezEhUtzjuAt0m6Gngz8KikyxvaXAbcCDwI3BMRdxYP08x6JE9uvwNYD3wguzL7d3C+m5Wq0GntiDgkqQZsBq6MiIM0vFOOiEeoX8FpZgMiZ25vBbY2Wdz5blaSop85ExHPUD+1ZWZLiHPbrP98hzAzM7PEuDibmZklxsXZzMwsMS7OZmZmiXFxNjMzS4yLs5mZWWJcnM3MzBLj4mxmZpYYF2czM7PEuDibmZklxsXZzMwsMS7OZmZmiXFxNjMzS4yLs5mZWWJcnM3MzBLj4mxmZpaYwsVZ0nWS7pZ06WLamFlaiua2892sPIWKs6RzgRURcSqwRtLaIm3MLC1Fc9v5blYuRUT3C0nXALdHxE5J5wGrIuL6Am22AFuy/74K+GaRF7S+zNYAABe/SURBVFGyo4Hv9zuILjnm6vUq3l+KiGN60E9TRXMbOLnTctmyzXJ+kI4Fx1q+QYkTqom1ac6vLLiyIeDJbPoQcHyRNhGxDdhWMIZKSHogIsb6HUc3HHP1Bi3eRSia23mWa5rzg7RtHWv5BiVO6G2sRT9zngWOzKaHW6wnTxszS0vR3Ha+m5WoaAJNAxuz6XXAEwXbmFlaiua2892sREVPa+8A9khaA5wJvEXS5RFxaZs2pywu1J5J6jR7To65eoMWb1FFczuazMtrkLatYy3foMQJPYy10AVhAJJWA5uBuyLiYNE2ZpaWorntfDcrT+HibGZmZtXwRRtmZmaJcXE2MzNLzLItzp1uNShppaQZSVPZ48Rex9gkply3R5T0SUln9yquNnF02sbvWrB9H5T06V7H2CSmTjGvlrRT0h5Jn+p1fIOsi+N3RNLXexVXixgGYnwYpDFhkMaDFMaBZVmcc95q8CTgpoioZY+Hexvl8+W9PaKkTcDLI+KLPQ3whXF0jDcits5vX2APfb5qM+c2fhvwuYjYBKySNBA3T+i3Lm/veRXPfWe65wZlfBikMWGQxoNUxoFlWZyBGnBzNr2L576fudApwDmSvibpryQV/dpZWWp0iFnS4cCfA09IelPvQmuqRudtDICkY4GRiJjuQVzt1Ogc89PAqyS9FPhFYKY3oQ28GjmOB0mnA3NAP6/2rjEY40ONwRkTagzOeFAjgXFguRbnxlsNjjRpcz9wWkRsBH4AnNWj2FrJE/ME8BhwJfAaSRf1KLZm8sQ770Jga+URdZYn5q8Ba4F3A48Dz/QmtIHXcdtKOgL4IHBJD+NqZlDGh0EaEwZpPEhiHFiuxTnPrQb3RcSBbPpx6juin/LEfDKwLfuO6eeA8R7F1kyu2zlKOgwYj4jdvQqsjTwxfxR4Z0RcRv24+L0exTbo8mzbS4BrI+IHPYuquUEZHwZpTBik8SCJcWC5Fuc8txq8UdI6SSuAc4CHehRbK3li/hbwymx6DNhffVgt5b2d4ybgvl4ElEOemF8MnJgdF6+lfmcs6yzPtn09cKGkKeDXJf1Fb0J7gUEZHwZpTBik8SCNcSAilt0DOIp6Ml0NfCPbAZc3tPk1YB/wMHDFgMS8Cvgb4C7gHuDYlOPN2n0UOLff27eLbfwa4FHq767vAIb7HfcgPPIeDwvaT6UcawrjwyCNCYM0HqQyDizbO4QN4q0GBy3mQYsXBjPmQTFI23ZQYh2UOMGxdh3Dci3OZmZmqVqunzkvK5L+UtLv9jsOMzPLx8XZzGxASfpdSX/Z5vnXSnpc0j9L+u89DM0Wqd831jAzs+pcQv2CtRsl/Xy/g7H8/JfzgJH0IUlfkvSN7N6+Z2fz/3v2/29KOrPDOrYsfLct6QuS/kuHZT4s6XuSDki6IJt3gaSrFrT5qqRTs+kpSedJ2iFp1yJespkVtxr4R4CIeLrPsVgXXJwH0wnAqcDZwGck/SfgfOqX/J8DXC+p3R14dgBnSloh6UXABuDLrRpLehnwB8C/p/4Vkv+QPfV54A1Zm2Hgl6l/XWPeR4HPZDGZ2SK1eNN7rKR7sjfPv5e1e5Okg9THic9LOijpVR3W/SZJ35b0lKTPSDpM0gmSHljQ5g8lvT+b/pCkyyRdKelpST9X0ctellycB9OOiHgmIh4C/gn4v6jfhP2ZiHiM+pf4N7VaOCKeov79vU3A6cD/ExH/u01/PwT+F/Ax6l8vOD9bz0HgXySNUi/YX4rnX/7/mYi4LSJ+WPSFmtkLNL7pPQX4r9m/fyJpTUTcGhEvB+6m/r3hl0fENzus9yPABcArgH8DXpmNJy+S9O+yNmcCtyxY5h3Ux4dXR8RPSnhtlnFxHkxaMH0Y9fu/LiyKeb4fdwvwn4H/RP0mBS1FxLPAb2bLnAZ8PbsPMsDfUk/YxqQFuDdHHGbWncY3vXdGxBMRMQP8T+p3Aivia8D7gP8T+EhEfCub/3ngjOwM2osi4h8WLPNwRFwREf9csE9rwcV5MP1n1X9P9GTg56m/i36rpJdKejX128nt6bCOz1MvzKfT5pQ2gKRfAb6aPf4AeHnWL9SL8xnAr1NPbjOrVuOb3oVvxn9GwXE9Ii4A3g8cA0xL+tXsqVuov/n+j9Q/EmsXi5XEV2sPpq9TL4SrgLdHxJezorwP+HE275/arSAivifpAHAgIuY6tP0HSXuA72SzPhHZTf8j4klJRwN/HxE/W9zLMrMCTs8+WvoZ9TfmFxRZiaRHqf+61hXUP6Y6CXg0IvZJOg54I/VT6tYDLs6DaV9EnLtwRkT8CfAnzRpHxO82zst+f/Yx4M48HUbEJbT4Kb+o/+B447xanvWa2aI9CnyJ+l+8f5id3i7iw8AU9Z9MvA/44oLndgNnZ59BWw/49p0DRtKHACLiQ4tcz/epXxT2+vkLObKrOxs9FREnLaYvMzPrjouzmdkyIenz1L9e1WjjggvALAEuzmZmZonx1dpmZmaJSeaCsKOPPjqOO+64SvuYm5tjaGio0j5S7j+FGJZ7/51imJ6e/n5EHNPjkPqi25xPYd/l5VirMSixdhNny5yPiCQe69evj6rt3r278j5S7j+FGJZ7/51iAB6IBPKxF49ucz6FfZeXY63GoMTaTZytct6ntc3MzBKTqzhLGsluQtHq+cOzX0q6W9LbW80zs8Ej6SWSviLpjuwXzI5o0e66LN8v7XWMZktNx+IsaTVwA/UvprdyEfU/zU8F3ihpVYt5ZjZ43gpcHRGbgYPUb9f6PJLOBVZk+b5G0toex2i2pHT8KpWko6j/0MKt0eKuT5JuAy6JiMckvReYBt7TOC8idjcstwXYAjAyMrJ++/btbWOZmSl645u6oaEh5ubmGB0dXdR6ipqdnWV4eLiSdefdNvPboJmytku7WNr1X0U8jbF0038VRkdH2x4H4+Pj0xFR9IcLKifpFuCqiLi3Yf41wO0RsVPSecCqiLi+yfJd5fxCVeZP2Rxr9/KMYXnyt1/j+0LdbNNWOd/xau2IOAQgqV2zIeDJbPoQMNJiXuO6twHbAMbGxqJWq7WNZXJyslO4bW3YsIG9e/cyMTGxqPUUNTU1RafXWFTebTO/DZopa7u0i6Vd/1XE0xhLN/1XYWJiotLjoEqSXgesbizMmcZ8P77ZOrrN+YUGabs51u7lGcPy5G+/xveFytimZV0QNgscmU0PZ+ttNs/MBlD2c4EfB1pdP+J8NytRWQk0DWzMptcBT7SYZ2YDJrsA7GbgfRGxv0Uz57tZibq+CYmk04ETIuITC2bfAOyUtAk4gfovmjzZZJ6ZDZ53AOuBD0j6APVfKDo8IhZelb0D2CNpDfXf/j2l92GaLR25i/P8xWARsQvY1fDcfkmbqb9z/mBEPAs0m2dmAyYitgJbO7Q5JKkGbAaujIgf9iI2s6WqtNt3RsT3qJ/6ajvPzJamiHgG57tZKXzRhpmZWWJcnM3MzBLj4mxmZpYYF2czM7PEuDibmZklxsXZzMwsMS7OZmZmiXFxNjMzS4yLs5mZWWJcnM3MzBLj4mxmZpYYF2czM7PEuDibmZklxsXZzMwsMS7OZmZmiXFxNjMzS0yu4izpOkl3S7q0xfPvkjSVPR6U9GlJKyXNLJh/Yrmhm1mvSBqRtKfN88dK+u6CfD+ml/GZLTUdi7Okc4EVEXEqsEbS2sY2EbE1ImoRUQP2ANuAk4Cb5udHxMMlx25mPSBpNXADMNSm2WuBKxbk+z/3JjqzpUkR0b6BdA1we0TslHQesCoirm/R9ljgzyLizZIuAC4GngL2A+dHxE8b2m8BtgCMjIys3759e9tYZmZm8r2qFoaGhpibm2N0dHRR6ylqdnaW4eHhStadd9vMb4Nmytou7WJp138V8TTG0k3/VRgdHW17HIyPj09HxFiPw2pL0lGAgFuzN+DN2lwJnAnMAvdGxHtatOsq5xeqMn/K5li7l2cMy5O//RrfF+pmm7bK+ZU5lh0CnsymDwHHt2l7IbA1m74fOC0iDki6FjgLuG1h44jYRv2vbMbGxqJWq7UNZHJyMke4rW3YsIG9e/cyMTGxqPUUNTU1RafXWFTebTO/DZopa7u0i6Vd/1XE0xhLN/1XYWJiotLjoAoRcQhAUrtmXwE+EhE/kvRlSSdFxL4m6+oq5xcapO3mWLuXZwzLk7/9Gt8XKmOb5vnMeRY4MpsebrWMpMOA8YjYnc3aFxEHsunHgRecDjezJePuiPhRNu18N1ukPMV5GtiYTa8DnmjRbhNw34L/3yhpnaQVwDnAQ0WDNLPk/Z2kV0h6MfAG4JF+B2Q2yPIU5x3A2yRdDbwZeFTS5U3avQG4a8H/LwNuBB4E7omIOxcbrJn1n6TTJf1+w+wPA7uBe4FPRcQ3ex+Z2dLR8TPniDgkqQZsBq6MiIM0+Ss4It7f8P9HqF+xbWZLwPzFYBGxC9jV8Nxu4NV9CMtsScpzQRgR8Qxwc8WxmJmZGb5DmJmZWXJcnM3MzBLj4mxmZpYYF2czM7PEuDibmZklxsXZzMwsMS7OZmZmiXFxNjMzS4yLs5mZWWJcnM3MzBLj4mxmZpYYF2czM7PEuDibmZklxsXZzMwsMS7OZmZmiXFxNjMzS0yu4izpOkl3S7q0xfMrJc1ImsoeJ2bzPyzpfkmfKDNoM+s9SSOS9rR5/nBJX8rGirf3MjazpaZjcZZ0LrAiIk4F1kha26TZScBNEVHLHg9LGgM2Aq8Bvivp9aVGbmY9I2k1cAMw1KbZRcAD2VjxRkmrehKc2RKkiGjfQLoGuD0idko6D1gVEdc3tLkAuBh4CtgPnA+8G/hxRHwyK9RnR8QfNSy3BdgCMDIysn779u1tY5mZmenmtb3A0NAQc3NzjI6OLmo9Rc3OzjI8PFzJuvNum/lt0ExZ26VdLO36ryKexli66b8Ko6OjbY+D8fHx6YgY63FYHUk6ChBwa0TUWrS5DbgkIh6T9F5gOiJ2N7TJnfNl7bteHNeNWsXar7GnnSrHpW7k2b55joEqxo1udVNrWuX8yjz9AE9m04eA45u0uR84LSIOSLoWOCtb7tsLlhtpXCgitgHbAMbGxqJWq7UNZHJyMke4rW3YsIG9e/cyMTGxqPUUNTU1RafXWFTebTO/DZopa7u0i6Vd/1XE0xhLN/1XYWJiotLjoCoRcQhAUrtmjWPFonK+rH3Xi+O6UatY+zX2tJPK8Zhn++Y5BqoYN7pVRq3J85nzLHBkNj3cYpl9EXEgm34cWJtzOTNbOpzzZiXJkzzT1D87BlgHPNGkzY2S1klaAZwDPJRzOTNbOpzzZiXJc1p7B7BH0hrgTOAtki6PiIVXbl8G/DX1z6Rui4g7JR0G/LGkjwFnZA8zWwIknQ6cEBELv4lxA7BT0ibgBOC+vgRntgR0LM4RcUhSDdgMXBkRB6n/ZbywzSPUr9heOO9n2RXavwV8LCK+U1rUZtYX8xeDRcQuYFfDc/slbab+1/MHI+LZ3kdotjTk+cuZiHgGuLnblUfEvwK3dLucmQ2miPgeBcYKM3s+X7BhZmaWGBdnMzOzxLg4m5mZJcbF2czMLDEuzmZmZolxcTYzM0uMi7OZmVliXJzNzMwS4+JsZmaWGBdnMzOzxLg4m5mZJcbF2czMLDEuzmZmZolxcTYzM0uMi7OZmVliXJzNzMwS4+JsZmaWmFzFWdJ1ku6WdGmL518i6SuS7pD0BUlHSFopaUbSVPY4sdzQzaxXcowBznezEnUszpLOBVZExKnAGklrmzR7K3B1RGwGDgJnACcBN0VELXs8XGbgZtYbOccA57tZiRQR7RtI1wC3R8ROSecBqyLi+jbtbwGuAn4DuBh4CtgPnB8RP21ouwXYAjAyMrJ++/btbWOZmZnp+ILaGRoaYm5ujtHR0UWtp6jZ2VmGh4crWXfebTO/DZopa7u0i6Vd/1XE0xhLN/1XYXR0tO1xMD4+Ph0RYz0Oq608Y4CkC+iQ71m73Dlf1r7rxXHdqFWs/Rp72qlyXOpGnu2b5xioYtzoVje1plXOr8zTD/BkNn0IOL5VQ0mvA1ZHxL2SngVOi4gDkq4FzgJuW9g+IrYB2wDGxsaiVqu1DWRycjJHuK1t2LCBvXv3MjExsaj1FDU1NUWn11hU3m0zvw2aKWu7tIulXf9VxNMYSzf9V2FiYqLS46AiecaA++mQ79Bdzpe173pxXDdqFWu/xp52Ujke82zfPMdAFeNGt8qoNXmK8yxwZDY9TItT4ZJeBnwc+O1s1r6I+Ek2/TjQ7FSYmaUvzxjgfDcrUZ4LwqaBjdn0OuCJxgaSjgBuBt4XEfuz2TdKWidpBXAO8NDiwzWzPug4BuB8NytVnuK8A3ibpKuBNwOPSrq8oc07gPXAB7IrNX8HuAy4EXgQuCci7iwxbjPrnTxjgPPdrEQdT2tHxCFJNWAzcGVEHKThXXFEbAW2Nln8pDKCNLP+yTkGPILz3aw0eT5zJiKeoX7a2syWIY8BZr3lO4SZmZklxsXZzMwsMS7OZmZmiXFxNjMzS4yLs5mZWWJcnM3MzBLj4mxmZpYYF2czM7PEuDibmZklxsXZzMwsMS7OZmZmiXFxNjMzS4yLs5mZWWJcnM3MzBLj4mxmZpYYF2czM7PE5CrOkq6TdLekS7tpk2c5M0tf0THAzIrpWJwlnQusiIhTgTWS1uZpk2c5M0tf0TGg13GaLSWKiPYNpGuA2yNip6TzgFURcX2nNsDJOZbbAmzJ/vsq4JulvKrWjga+X3EfKfefQgzLvf9OMfxSRBzTy2A6KToGNLbJ2i0m51PYd3k51moMSqzdxNk051fmWHAIeDKbPgQcn7NNx+UiYhuwLUcMpZD0QESM9aq/1PpPIYbl3n8qMXSp6BjwAovJ+UHabo61GoMSaxlx5vnMeRY4MpsebrFMszZ5ljOz9BUdA8ysoDwJNA1szKbXAU/kbJNnOTNLX9ExwMwKynNaewewR9Ia4EzgLZIuj4hL27Q5BYgm8/qtZ6fQE+0f+h/Dcu8f0oihG0XHgLIN0nZzrNUYlFgXHWfHC8IAJK0GNgN3RcTBvG3yLGdm6Ss6BphZMbmKs5mZmfWOL9owMzNLzJIsznnvVCRpRNLXe92/pJWSZiRNZY8Tex3DgnaflHR2r/uX9K4Fr/9BSZ/ucf+rJe2UtEfSp8rsu4sYflnSl7MY/rSKGAZRCvmTV7/zrBv9zsm8UsjdvKrM8SVXnLu8U9FVPPf1j172fxJwU0TUssfDfYgBSZuAl0fEF3vdf0RsnX/9wB5KvNAj5+t/G/C5iNgErJJU6ncnc8bwP4CPZDH8gqRamTEMohTyJ69+51k3+p2TeaWQu3lVneNLrjgDNeDmbHoXz32943kknQ7MAWVfuJKn/1OAcyR9TdJfScpz1XypMUg6HPhz4AlJb+p1/wviOBYYiYjpHvf/NPAqSS8FfhGYKbH/vDH8CvD32fRTwEtKjmEQ1eh//uRVo7951o0a/c3JvGr0P3fzqlFhji/F4tx4p6KRxgaSjgA+CFzSj/6B+4HTImIj8APgrD7EMAE8BlwJvEbSRT3uf96FwNYS+87b/9eAtcC7gceBZ/oQwy3AH2WnO88AvlpyDIMohfzJq9951o1+52ReKeRuXpXm+FIsznnuVHQJcG1E/KBP/e+LiAPZ9OPUD7Rex3AysC37ysvngPEe94+kw4DxiNhdYt95+/8o8M6IuIz6Pvi9XscQEZcDXwH+G3BDRMyWHMMgSiF/8up3nnWj3zmZVwq5m1elOb4Ui3OeOxW9HrhQ0hTw65L+osf93yhpnaQVwDnAQyX2nzeGbwGvzKbHgP097h9gE3Bfif120/+LgROzffBa6jfN6XUMAA8Co8DVJfc/qFLIn7z6nWfd6HdO5pVC7uZVbY5HxJJ6AEdRT9argW9kG+3yNu2net0/8GvAPuBh4Ip+bAPqvxz2N8BdwD3Asb3eB9TfAZ/bp9f/GuBR6u9+7wCG+3EcAh8G3lb2NhjURwr5U3KsleVZ2bFm7SrJyZK3aaW5W8E2LZTjS/ImJOrznYr63X8KMSz3/lOJYRAN0nZzrOUblDih2liXZHE2MzMbZEvxM2czM7OB5uJsZmaWGBdnMzOzxLg4m5mZJcbF2czMLDH/H3c9L5vpxiBbAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 576x504 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "optimizer = {\n",
    "        'lr':lr_score,\n",
    "        'linear_svr':linear_svr_score,\n",
    "        'poly_svr':poly_svr_score,\n",
    "        'rbf_svr':rbf_svr_score,\n",
    "        'knn':knn_score,\n",
    "        'dtr':dtr_score\n",
    "        }\n",
    "optimizer= pd.DataFrame(optimizer)\n",
    "optimizer.hist(color='k',alpha=0.6,figsize=(8,7))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "rbf_svr       0.724255\n",
       "knn           0.722693\n",
       "poly_svr      0.683848\n",
       "lr            0.658146\n",
       "linear_svr    0.657090\n",
       "dtr           0.656215\n",
       "dtype: float64"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "optimizer.mean().sort_values(ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>rbf_svr</th>\n",
       "      <td>0.812363</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>poly_svr</th>\n",
       "      <td>0.786603</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>knn</th>\n",
       "      <td>0.727340</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>dtr</th>\n",
       "      <td>0.715422</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>linear_svr</th>\n",
       "      <td>0.602139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lr</th>\n",
       "      <td>0.589446</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               score\n",
       "rbf_svr     0.812363\n",
       "poly_svr    0.786603\n",
       "knn         0.727340\n",
       "dtr         0.715422\n",
       "linear_svr  0.602139\n",
       "lr          0.589446"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#开始预测\n",
    "#rbf\n",
    "rbf_svr.fit(x_train,y_train)\n",
    "rbf_svr_y_predict = rbf_svr.predict(x_test)\n",
    "rbf_svr_y_predict_score=rbf_svr.score(x_test, y_test)\n",
    "#KNN\n",
    "knn.fit(x_train,y_train)\n",
    "knn_y_predict = knn.predict(x_test)\n",
    "knn_y_predict_score = knn.score(x_test, y_test)\n",
    "#poly_svr\n",
    "poly_svr.fit(x_train,y_train)\n",
    "poly_svr_y_predict = poly_svr.predict(x_test)\n",
    "poly_svr_y_predict_score = poly_svr.score(x_test, y_test)\n",
    "#dtr\n",
    "dtr.fit(x_train, y_train)\n",
    "dtr_y_predict = dtr.predict(x_test)\n",
    "dtr_y_predict_score = dtr.score(x_test, y_test)\n",
    "#lr\n",
    "lr.fit(x_train, y_train)\n",
    "lr_y_predict = lr.predict(x_test)\n",
    "lr_y_predict_score = lr.score(x_test, y_test)\n",
    "#linear_svr\n",
    "linear_svr.fit(x_train, y_train)\n",
    "linear_svr_y_predict = linear_svr.predict(x_test)\n",
    "linear_svr_y_predict_score = linear_svr.score(x_test, y_test)\n",
    "predict_score = {\n",
    "        'lr':lr_y_predict_score,\n",
    "        'linear_svr':linear_svr_y_predict_score,\n",
    "        'poly_svr':poly_svr_y_predict_score,\n",
    "        'rbf_svr':rbf_svr_y_predict_score,\n",
    "        'knn':knn_y_predict_score,\n",
    "        'dtr':dtr_y_predict_score\n",
    "        }\n",
    "predict_score = pd.DataFrame(predict_score, index=['score']).transpose()\n",
    "predict_score.sort_values(by='score',ascending = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
